Move: Fix processing of references with qualifier receivers

#KT-8098 Fixed
This commit is contained in:
Alexey Sedunov
2015-06-23 18:15:04 +03:00
parent c4442c59d4
commit 5d89097870
10 changed files with 84 additions and 6 deletions
@@ -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)
@@ -0,0 +1,12 @@
package source
interface MyIntf {
val foo: Int
}
open class MyClass: MyIntf {
val foo: Int = 1
}
object MyObj: MyIntf by MyClass()
@@ -0,0 +1,7 @@
package target
import source.MyObj
fun test() {
MyObj.foo
}
@@ -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 <caret>test() {
MyObj.foo
}
@@ -0,0 +1,5 @@
{
"mainFile": "source/Foo.kt",
"type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS",
"targetPackage": "target"
}
@@ -0,0 +1,8 @@
package source
open class MyClass {
val foo: Int = 1
}
object MyObj: MyClass()
@@ -0,0 +1,7 @@
package target
import source.MyObj
fun test() {
MyObj.foo
}
@@ -0,0 +1,11 @@
package source
open class MyClass {
val foo: Int = 1
}
object MyObj: MyClass()
fun <caret>test() {
MyObj.foo
}
@@ -0,0 +1,5 @@
{
"mainFile": "source/Foo.kt",
"type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS",
"targetPackage": "target"
}
@@ -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");