From cefd8b43a0b5e54aabce718d9a1cc9a8517e6548 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 18 Mar 2015 17:59:51 +0300 Subject: [PATCH] Safe Delete: Add test for primary constructor with usages in delegation calls --- .../kotlin/generators/tests/GenerateTests.kt | 1 + .../classWithDelegationCalls.java | 5 +++++ .../classWithDelegationCalls.kt | 11 +++++++++++ .../classWithDelegationCalls.kt.messages | 1 + .../safeDelete/AbstractJetSafeDeleteTest.java | 4 ++++ .../safeDelete/JetSafeDeleteTestGenerated.java | 16 ++++++++++++++++ 6 files changed, 38 insertions(+) create mode 100644 idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.java create mode 100644 idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt create mode 100644 idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt.messages diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 2af46222e13..575b0b487fe 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -481,6 +481,7 @@ fun main(args: Array) { testClass(javaClass()) { model("safeDelete/deleteClass/kotlinClass", testMethod = "doClassTest") + model("safeDelete/deleteClass/kotlinClassWithJava", testMethod = "doClassTestWithJava") model("safeDelete/deleteObject/kotlinObject", testMethod = "doObjectTest") model("safeDelete/deleteFunction/kotlinFunction", testMethod = "doFunctionTest") model("safeDelete/deleteFunction/kotlinFunctionWithJava", testMethod = "doFunctionTestWithJava") diff --git a/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.java b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.java new file mode 100644 index 00000000000..3972a6d51e9 --- /dev/null +++ b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.java @@ -0,0 +1,5 @@ +class J extends B { + public J() { + super(); + } +} \ No newline at end of file diff --git a/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt new file mode 100644 index 00000000000..5eb121e265a --- /dev/null +++ b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt @@ -0,0 +1,11 @@ +open class B() { + constructor(a: Int): this() { + + } +} + +open class A: B { + constructor(a: Int): super() { + + } +} \ No newline at end of file diff --git a/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt.messages b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt.messages new file mode 100644 index 00000000000..313224c1a85 --- /dev/null +++ b/idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt.messages @@ -0,0 +1 @@ +class B has 4 usages that are not safe to delete. \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/safeDelete/AbstractJetSafeDeleteTest.java b/idea/tests/org/jetbrains/kotlin/safeDelete/AbstractJetSafeDeleteTest.java index 1ca4c91c57d..eeff2d61f03 100644 --- a/idea/tests/org/jetbrains/kotlin/safeDelete/AbstractJetSafeDeleteTest.java +++ b/idea/tests/org/jetbrains/kotlin/safeDelete/AbstractJetSafeDeleteTest.java @@ -54,6 +54,10 @@ public abstract class AbstractJetSafeDeleteTest extends JetLightCodeInsightFixtu doTest(path, JetClass.class, false); } + public void doClassTestWithJava(@NotNull String path) throws Exception { + doTest(path, JetClass.class, true); + } + public void doObjectTest(@NotNull String path) throws Exception { doTest(path, JetObjectDeclaration.class, false); } diff --git a/idea/tests/org/jetbrains/kotlin/safeDelete/JetSafeDeleteTestGenerated.java b/idea/tests/org/jetbrains/kotlin/safeDelete/JetSafeDeleteTestGenerated.java index ccebb2224aa..3337a2cdd07 100644 --- a/idea/tests/org/jetbrains/kotlin/safeDelete/JetSafeDeleteTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/safeDelete/JetSafeDeleteTestGenerated.java @@ -30,6 +30,7 @@ import java.util.regex.Pattern; @SuppressWarnings("all") @InnerTestClasses({ JetSafeDeleteTestGenerated.KotlinClass.class, + JetSafeDeleteTestGenerated.KotlinClassWithJava.class, JetSafeDeleteTestGenerated.KotlinObject.class, JetSafeDeleteTestGenerated.KotlinFunction.class, JetSafeDeleteTestGenerated.KotlinFunctionWithJava.class, @@ -119,6 +120,21 @@ public class JetSafeDeleteTestGenerated extends AbstractJetSafeDeleteTest { } } + @TestMetadata("idea/testData/safeDelete/deleteClass/kotlinClassWithJava") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class KotlinClassWithJava extends AbstractJetSafeDeleteTest { + public void testAllFilesPresentInKotlinClassWithJava() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/safeDelete/deleteClass/kotlinClassWithJava"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("classWithDelegationCalls.kt") + public void testClassWithDelegationCalls() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/safeDelete/deleteClass/kotlinClassWithJava/classWithDelegationCalls.kt"); + doClassTestWithJava(fileName); + } + } + @TestMetadata("idea/testData/safeDelete/deleteObject/kotlinObject") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)