From 2e8b374ce82200e650176f379267e7d8f9002e6b Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 27 Jun 2017 15:17:14 +0300 Subject: [PATCH] Move: Use KtNamedDeclaration as referrer when reporting a conflict EA-103817 Fixed --- .../move/moveDeclarations/moveConflictUtils.kt | 2 +- .../misc/classWithInitializer/after/source/Foo.kt | 4 ++++ .../misc/classWithInitializer/after/target/Test.kt | 9 +++++++++ .../misc/classWithInitializer/before/source/Foo.kt | 9 +++++++++ .../misc/classWithInitializer/conflicts.txt | 1 + .../misc/classWithInitializer/delegateInObject.test | 5 +++++ .../kotlin/idea/refactoring/move/MoveTestGenerated.java | 6 ++++++ 7 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/target/Test.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/before/source/Foo.kt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/conflicts.txt create mode 100644 idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.test diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt index 4d47137ec2a..4c03ae4c94b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt @@ -380,7 +380,7 @@ class MoveConflictChecker( val targetVisibility = visibility.normalize() if (targetVisibility == Visibilities.PUBLIC) return true - val referrer = ref.element.getStrictParentOfType() + val referrer = ref.element.getStrictParentOfType() val referrerDescriptor = referrer?.resolveToDescriptor() ?: return true if (!isVisibleIn(referrerDescriptor)) return true diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/source/Foo.kt new file mode 100644 index 00000000000..701960527ce --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/source/Foo.kt @@ -0,0 +1,4 @@ +package source + +private class X + diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/target/Test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/target/Test.kt new file mode 100644 index 00000000000..be60ba02a19 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/after/target/Test.kt @@ -0,0 +1,9 @@ +package target + +import source.X + +class Test { + init { + X() + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/before/source/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/before/source/Foo.kt new file mode 100644 index 00000000000..1e68e8970a8 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/before/source/Foo.kt @@ -0,0 +1,9 @@ +package source + +private class X + +class Test { + init { + X() + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/conflicts.txt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/conflicts.txt new file mode 100644 index 00000000000..37ec87dc97d --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/conflicts.txt @@ -0,0 +1 @@ +Class Test uses class X which will be inaccessible after move diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.test b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.test new file mode 100644 index 00000000000..1a649bb5efc --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.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/MoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java index 7034d14091f..7de65ee9ccd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java @@ -504,6 +504,12 @@ public class MoveTestGenerated extends AbstractMoveTest { doTest(fileName); } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.test") + public void testKotlin_moveTopLevelDeclarations_misc_classWithInitializer_DelegateInObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/classWithInitializer/delegateInObject.test"); + doTest(fileName); + } + @TestMetadata("kotlin/moveTopLevelDeclarations/misc/companionExtensionMemberRef/companionExtensionMemberRef.test") public void testKotlin_moveTopLevelDeclarations_misc_companionExtensionMemberRef_CompanionExtensionMemberRef() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/companionExtensionMemberRef/companionExtensionMemberRef.test");