diff --git a/ChangeLog.md b/ChangeLog.md index cfeae566193..ced42497094 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -126,6 +126,7 @@ These artifacts include extensions for the types available in the latter JDKs, s - [`KT-8867`](https://youtrack.jetbrains.com/issue/KT-8867) Rename: Rename all overridden members if user chooses to refactor base declaration(s) - Pull Up: Drop 'override' modifier if moved member doesn't override anything - [`KT-13660`](https://youtrack.jetbrains.com/issue/KT-13660) Move: Do not drop object receivers when calling variable of extension functional type +- [`KT-13759`](https://youtrack.jetbrains.com/issue/KT-13759) Rename: Process object-wrapping alias references ##### New features diff --git a/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.0.kt b/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.0.kt new file mode 100644 index 00000000000..c63d5ee98bb --- /dev/null +++ b/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.0.kt @@ -0,0 +1,9 @@ +// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtTypeAlias +// OPTIONS: usages +object OOO +typealias Alias = OOO + +fun f() { + Alias + val a: Alias +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.results.txt b/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.results.txt new file mode 100644 index 00000000000..1a8c3527191 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.results.txt @@ -0,0 +1,2 @@ +Local variable declaration 8 val a: Alias +Unclassified usage 7 Alias \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAlias/after/test/test.kt b/idea/testData/refactoring/rename/objectAlias/after/test/test.kt new file mode 100644 index 00000000000..b161a0e7227 --- /dev/null +++ b/idea/testData/refactoring/rename/objectAlias/after/test/test.kt @@ -0,0 +1,9 @@ +package test + +object OOO +typealias AliasNew = OOO + +fun f() { + AliasNew + val a: AliasNew +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAlias/before/test/test.kt b/idea/testData/refactoring/rename/objectAlias/before/test/test.kt new file mode 100644 index 00000000000..e48f3719e03 --- /dev/null +++ b/idea/testData/refactoring/rename/objectAlias/before/test/test.kt @@ -0,0 +1,9 @@ +package test + +object OOO +typealias /*rename*/Alias = OOO + +fun f() { + Alias + val a: Alias +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAlias/objectAlias.test b/idea/testData/refactoring/rename/objectAlias/objectAlias.test new file mode 100644 index 00000000000..4904f4173cb --- /dev/null +++ b/idea/testData/refactoring/rename/objectAlias/objectAlias.test @@ -0,0 +1,6 @@ +{ + "type": "MARKED_ELEMENT", + "mainFile": "test/test.kt", + "newName": "AliasNew", + "withRuntime": "true" +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAliasByRef/after/test/test.kt b/idea/testData/refactoring/rename/objectAliasByRef/after/test/test.kt new file mode 100644 index 00000000000..b161a0e7227 --- /dev/null +++ b/idea/testData/refactoring/rename/objectAliasByRef/after/test/test.kt @@ -0,0 +1,9 @@ +package test + +object OOO +typealias AliasNew = OOO + +fun f() { + AliasNew + val a: AliasNew +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAliasByRef/before/test/test.kt b/idea/testData/refactoring/rename/objectAliasByRef/before/test/test.kt new file mode 100644 index 00000000000..cf198fea85d --- /dev/null +++ b/idea/testData/refactoring/rename/objectAliasByRef/before/test/test.kt @@ -0,0 +1,9 @@ +package test + +object OOO +typealias Alias = OOO + +fun f() { + /*rename*/Alias + val a: Alias +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/objectAliasByRef/objectAliasByRef.test b/idea/testData/refactoring/rename/objectAliasByRef/objectAliasByRef.test new file mode 100644 index 00000000000..231bb987459 --- /dev/null +++ b/idea/testData/refactoring/rename/objectAliasByRef/objectAliasByRef.test @@ -0,0 +1,7 @@ +{ + "type": "MARKED_ELEMENT", + "mainFile": "test/test.kt", + "newName": "AliasNew", + "byRef": "true", + "withRuntime": "true" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/AbstractFindUsagesTest.kt b/idea/tests/org/jetbrains/kotlin/findUsages/AbstractFindUsagesTest.kt index 05ebc08773e..038fc496aa6 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/AbstractFindUsagesTest.kt +++ b/idea/tests/org/jetbrains/kotlin/findUsages/AbstractFindUsagesTest.kt @@ -393,7 +393,7 @@ abstract class AbstractFindUsagesTest : KotlinLightCodeInsightFixtureTestCase() val handler: FindUsagesHandler = (if (targetElement is PsiMember) { JavaFindUsagesHandler(targetElement, JavaFindUsagesHandlerFactory(project)) } - else if (targetElement is KtDeclaration) { + else if (targetElement is KtDeclaration && targetElement !is KtTypeAlias) { KotlinFindUsagesHandlerFactory(project).createFindUsagesHandlerNoQuestions(targetElement) } else { diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java index 40807e73b2f..d5cdf27d3d4 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/findUsages/FindUsagesTestGenerated.java @@ -1195,6 +1195,21 @@ public class FindUsagesTestGenerated extends AbstractFindUsagesTest { } } + @TestMetadata("idea/testData/findUsages/kotlin/findTypeAliasUsages") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class FindTypeAliasUsages extends AbstractFindUsagesTest { + public void testAllFilesPresentInFindTypeAliasUsages() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/findUsages/kotlin/findTypeAliasUsages"), Pattern.compile("^(.+)\\.0\\.kt$"), true); + } + + @TestMetadata("objectAlias.0.kt") + public void testObjectAlias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findTypeAliasUsages/objectAlias.0.kt"); + doTest(fileName); + } + } + @TestMetadata("idea/testData/findUsages/kotlin/findTypeParameterUsages") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index 546c32c8add..6a5e1f3fc76 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -239,6 +239,18 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("objectAlias/objectAlias.test") + public void testObjectAlias_ObjectAlias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/objectAlias/objectAlias.test"); + doTest(fileName); + } + + @TestMetadata("objectAliasByRef/objectAliasByRef.test") + public void testObjectAliasByRef_ObjectAliasByRef() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/objectAliasByRef/objectAliasByRef.test"); + doTest(fileName); + } + @TestMetadata("paramererAsReceiverWithNewNameAsSelector/parameterAsReceiverWithNewNameAsSelector.test") public void testParamererAsReceiverWithNewNameAsSelector_ParameterAsReceiverWithNewNameAsSelector() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/paramererAsReceiverWithNewNameAsSelector/parameterAsReceiverWithNewNameAsSelector.test");