From 5d890978709bb41a92c9d9d2ddaf8390c2ba4d89 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 23 Jun 2015 18:15:04 +0300 Subject: [PATCH] Move: Fix processing of references with qualifier receivers #KT-8098 Fixed --- .../kotlin/idea/refactoring/move/moveUtils.kt | 8 ++------ .../misc/delegateInObject/after/source/Foo.kt | 12 ++++++++++++ .../misc/delegateInObject/after/target/test.kt | 7 +++++++ .../misc/delegateInObject/before/source/Foo.kt | 15 +++++++++++++++ .../misc/delegateInObject/delegateInObject.test | 5 +++++ .../misc/fakeOverrideInObject/after/source/Foo.kt | 8 ++++++++ .../fakeOverrideInObject/after/target/test.kt | 7 +++++++ .../fakeOverrideInObject/before/source/Foo.kt | 11 +++++++++++ .../fakeOverrideInObject.test | 5 +++++ .../refactoring/move/JetMoveTestGenerated.java | 12 ++++++++++++ 10 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/target/test.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/before/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/target/test.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/before/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index fcbcb20a084..509713d0e48 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -102,13 +102,9 @@ public fun JetElement.getInternalReferencesToUpdateOnPackageNameChange(packageNa if (receiver != null) { val receiverRef = receiver.getQualifiedElementSelector() as? JetSimpleNameExpression ?: return null if (bindingContext[BindingContext.QUALIFIER, receiverRef] == null) return null - if (descriptor is CallableMemberDescriptor && descriptor.getKind() == Kind.SYNTHESIZED) { - return processReference(receiverRef, bindingContext) - } - } - else { - if (containingDescriptor !is PackageFragmentDescriptor) return null + return processReference(receiverRef, bindingContext) } + if (containingDescriptor !is PackageFragmentDescriptor) return null } val fqName = DescriptorUtils.getFqName(descriptor) diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/source/Foo.kt new file mode 100644 index 00000000000..9f0b6af2f4b --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/source/Foo.kt @@ -0,0 +1,12 @@ +package source + +interface MyIntf { + val foo: Int +} + +open class MyClass: MyIntf { + val foo: Int = 1 +} + +object MyObj: MyIntf by MyClass() + diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/target/test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/target/test.kt new file mode 100644 index 00000000000..7d9135d4213 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/after/target/test.kt @@ -0,0 +1,7 @@ +package target + +import source.MyObj + +fun test() { + MyObj.foo +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/before/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/before/source/Foo.kt new file mode 100644 index 00000000000..cdabb6cecc8 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/before/source/Foo.kt @@ -0,0 +1,15 @@ +package source + +interface MyIntf { + val foo: Int +} + +open class MyClass: MyIntf { + val foo: Int = 1 +} + +object MyObj: MyIntf by MyClass() + +fun test() { + MyObj.foo +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test new file mode 100644 index 00000000000..1a649bb5efc --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test @@ -0,0 +1,5 @@ +{ + "mainFile": "source/Foo.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "target" +} diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/source/Foo.kt new file mode 100644 index 00000000000..8d02323f09b --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/source/Foo.kt @@ -0,0 +1,8 @@ +package source + +open class MyClass { + val foo: Int = 1 +} + +object MyObj: MyClass() + diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/target/test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/target/test.kt new file mode 100644 index 00000000000..7d9135d4213 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/after/target/test.kt @@ -0,0 +1,7 @@ +package target + +import source.MyObj + +fun test() { + MyObj.foo +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/before/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/before/source/Foo.kt new file mode 100644 index 00000000000..43ec8203777 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/before/source/Foo.kt @@ -0,0 +1,11 @@ +package source + +open class MyClass { + val foo: Int = 1 +} + +object MyObj: MyClass() + +fun test() { + MyObj.foo +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test new file mode 100644 index 00000000000..1a649bb5efc --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test @@ -0,0 +1,5 @@ +{ + "mainFile": "source/Foo.kt", + "type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS", + "targetPackage": "target" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/JetMoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/JetMoveTestGenerated.java index 45999ad55ec..fd95c3901cd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/JetMoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/JetMoveTestGenerated.java @@ -269,6 +269,18 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest { doTest(fileName); } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test") + public void testKotlin_moveTopLevelDeclarations_misc_delegateInObject_DelegateInObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/delegateInObject/delegateInObject.test"); + doTest(fileName); + } + + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test") + public void testKotlin_moveTopLevelDeclarations_misc_fakeOverrideInObject_FakeOverrideInObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/fakeOverrideInObject/fakeOverrideInObject.test"); + doTest(fileName); + } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/internalReferences/internalReferences.test") public void testKotlin_moveTopLevelDeclarations_misc_internalReferences_InternalReferences() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/internalReferences/internalReferences.test");