From d05a525d8dd83f895b3f41309db5259acc13a8f3 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 21 Jul 2017 13:31:56 +0300 Subject: [PATCH] Search for KtTypeAlias in safe delete processor Related to KT-16046 --- .../kotlin/generators/tests/GenerateTests.kt | 1 + .../safeDelete/KotlinSafeDeleteProcessor.kt | 4 ++++ .../deleteTypeAlias/kotlinTypeAlias/simple.kt | 1 + .../kotlinTypeAlias/simple.kt.after | 0 .../deleteTypeAlias/kotlinTypeAlias/used.kt | 7 +++++++ .../kotlinTypeAlias/used.kt.messages | 1 + .../safeDelete/AbstractSafeDeleteTest.java | 4 ++++ .../safeDelete/SafeDeleteTestGenerated.java | 21 +++++++++++++++++++ 8 files changed, 39 insertions(+) create mode 100644 idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt create mode 100644 idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt.after create mode 100644 idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt create mode 100644 idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.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 85d38c839f1..3e40e539279 100755 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -725,6 +725,7 @@ fun main(args: Array) { model("refactoring/safeDelete/deleteProperty/kotlinProperty", testMethod = "doPropertyTest") model("refactoring/safeDelete/deleteProperty/kotlinPropertyWithJava", testMethod = "doPropertyTestWithJava") model("refactoring/safeDelete/deleteProperty/javaPropertyWithKotlin", testMethod = "doJavaPropertyTest") + model("refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias", testMethod = "doTypeAliasTest") model("refactoring/safeDelete/deleteTypeParameter/kotlinTypeParameter", testMethod = "doTypeParameterTest") model("refactoring/safeDelete/deleteTypeParameter/kotlinTypeParameterWithJava", testMethod = "doTypeParameterTestWithJava") model("refactoring/safeDelete/deleteValueParameter/kotlinValueParameter", testMethod = "doValueParameterTest") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt index 3c40fbd3c3e..b46eb0b99c4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -237,6 +237,10 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { is KtParameter -> findUsagesByJavaProcessor(element) + is KtTypeAlias -> { + findKotlinDeclarationUsages(element) + } + else -> null } ?: getSearchInfo(element) } diff --git a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt new file mode 100644 index 00000000000..b2a9b9b8069 --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt @@ -0,0 +1 @@ +typealias MyString = String \ No newline at end of file diff --git a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt.after b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt.after new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt new file mode 100644 index 00000000000..127bd1bf67d --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt @@ -0,0 +1,7 @@ +typealias MyString = String + +val ms: MyString = "" + +class My { + val mms: MyString = "" +} \ No newline at end of file diff --git a/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages new file mode 100644 index 00000000000..fc4b548342b --- /dev/null +++ b/idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt.messages @@ -0,0 +1 @@ +type alias MyString has 1 usage that is not safe to delete. \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/AbstractSafeDeleteTest.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/AbstractSafeDeleteTest.java index 16ce58ae25d..c650db1a0b8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/AbstractSafeDeleteTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/AbstractSafeDeleteTest.java @@ -91,6 +91,10 @@ public abstract class AbstractSafeDeleteTest extends KotlinLightCodeInsightFixtu doTest(path, PsiMethod.class, true); } + public void doTypeAliasTest(@NotNull String path) throws Exception { + doTest(path, KtTypeAlias.class, false); + } + public void doTypeParameterTest(@NotNull String path) throws Exception { doTest(path, KtTypeParameter.class, false); } diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java index 0c634b3ec5d..74228b6e08c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/safeDelete/SafeDeleteTestGenerated.java @@ -720,6 +720,27 @@ public class SafeDeleteTestGenerated extends AbstractSafeDeleteTest { } } + @TestMetadata("idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class KotlinTypeAlias extends AbstractSafeDeleteTest { + public void testAllFilesPresentInKotlinTypeAlias() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/simple.kt"); + doTypeAliasTest(fileName); + } + + @TestMetadata("used.kt") + public void testUsed() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/safeDelete/deleteTypeAlias/kotlinTypeAlias/used.kt"); + doTypeAliasTest(fileName); + } + } + @TestMetadata("idea/testData/refactoring/safeDelete/deleteTypeParameter/kotlinTypeParameter") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)