Skip to content

Commit 883558a

Browse files
committed
Move/Copy: Fix 'protected' conflict reporting for references in super type entries
#KT-22678 Fixed
1 parent 27f5ddc commit 883558a

File tree

19 files changed

+67
-2
lines changed

19 files changed

+67
-2
lines changed

idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,12 @@ class MoveConflictChecker(
392392
val targetVisibility = visibility.normalize()
393393
if (targetVisibility == Visibilities.PUBLIC) return true
394394

395-
val referrer = ref.element.getStrictParentOfType<KtNamedDeclaration>()
396-
val referrerDescriptor = referrer?.unsafeResolveToDescriptor() ?: return true
395+
val refElement = ref.element
396+
val referrer = refElement.getStrictParentOfType<KtNamedDeclaration>()
397+
var referrerDescriptor = referrer?.resolveToDescriptorIfAny() ?: return true
398+
if (referrerDescriptor is ClassDescriptor && refElement.getParentOfTypeAndBranch<KtSuperTypeListEntry> { typeReference } != null) {
399+
referrerDescriptor.unsubstitutedPrimaryConstructor?.let { referrerDescriptor = it }
400+
}
397401

398402
if (!isVisibleIn(referrerDescriptor)) return true
399403

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package bar
2+
3+
class Test2(name: String) : TestBase(name)

idea/testData/refactoring/copy/protectedConstructorRefInSuperListEntry/after/bar/dummy.txt

Whitespace-only changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package foo
2+
3+
class Test(name: String) : TestBase(name)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package foo;
2+
3+
public class TestBase {
4+
protected TestBase(final String test) {}
5+
}

idea/testData/refactoring/copy/protectedConstructorRefInSuperListEntry/before/bar/dummy.txt

Whitespace-only changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package foo
2+
3+
class <caret>Test(name: String) : TestBase(name)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package foo;
2+
3+
public class TestBase {
4+
protected TestBase(final String test) {}
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"mainFile": "foo/Test.kt",
3+
"targetPackage": "bar",
4+
"newName": "Test2"
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package bar
2+
3+
import foo.TestBase
4+
5+
class Test(name: String) : TestBase(name)

idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/protectedConstructorRefInSuperListEntry/after/bar/dummy.txt

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package foo
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package foo;
2+
3+
public class TestBase {
4+
protected TestBase(final String test) {}
5+
}

idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/protectedConstructorRefInSuperListEntry/before/bar/dummy.txt

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package foo
2+
3+
class <caret>Test(name: String) : TestBase(name)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package foo;
2+
3+
public class TestBase {
4+
protected TestBase(final String test) {}
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"mainFile": "foo/Test.kt",
3+
"type": "MOVE_KOTLIN_TOP_LEVEL_DECLARATIONS",
4+
"targetPackage": "bar"
5+
}

idea/tests/org/jetbrains/kotlin/idea/refactoring/copy/CopyTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)