From 676649458119aade6b73e197466a5d984648e686 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 15 Aug 2016 17:44:39 +0300 Subject: [PATCH] Push Down: Do not specifiy visibility on generated overriding members #KT-12971 Fixed --- ChangeLog.md | 1 + .../refactoring/pushDown/KotlinPushDownProcessor.kt | 5 ++--- .../pushDown/dropVisibilityOnGeneratedOverride.kt | 10 ++++++++++ .../dropVisibilityOnGeneratedOverride.kt.after | 12 ++++++++++++ .../refactoring/pushDown/PushDownTestGenerated.java | 6 ++++++ 5 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt create mode 100644 idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt.after diff --git a/ChangeLog.md b/ChangeLog.md index 05cf4414228..002714d3ed9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -268,6 +268,7 @@ Using 'this' as function argument in constructor of non-final class - [`KT-13175`](https://youtrack.jetbrains.com/issue/KT-13175) Move: Warn about accessibility conflicts when moving entire file - [`KT-13240`](https://youtrack.jetbrains.com/issue/KT-13240) Rename: Do not report shadowing conflict if redeclaration is detected - [`KT-13253`](https://youtrack.jetbrains.com/issue/KT-13253) Rename: Report conflicts for constructor parameters +- [`KT-12971`](https://youtrack.jetbrains.com/issue/KT-12971) Push Down: Do not specifiy visibility on generated overriding members ##### New features diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt index 1c789ce53ee..a6558fa630c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/KotlinPushDownProcessor.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.idea.refactoring.pullUp.* import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext @@ -154,9 +155,7 @@ class KotlinPushDownProcessor( } } if (memberDescriptor.modality != Modality.ABSTRACT && memberInfo.isToAbstract) { - if (hasModifier(KtTokens.PRIVATE_KEYWORD)) { - addModifier(KtTokens.PROTECTED_KEYWORD) - } + KtTokens.VISIBILITY_MODIFIERS.types.forEach { removeModifier(it as KtModifierKeywordToken) } addModifier(KtTokens.OVERRIDE_KEYWORD) } } diff --git a/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt b/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt new file mode 100644 index 00000000000..61828fb22f5 --- /dev/null +++ b/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt @@ -0,0 +1,10 @@ +open class A { + // INFO: {"checked": "true", "toAbstract": "true"} + protected open fun foo() { + + } +} + +class B : A() { + +} \ No newline at end of file diff --git a/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt.after b/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt.after new file mode 100644 index 00000000000..5242ec3657c --- /dev/null +++ b/idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt.after @@ -0,0 +1,12 @@ +open class A { + // INFO: {"checked": "true", "toAbstract": "true"} + protected abstract fun foo() +} + +class B : A() { + // INFO: {"checked": "true", "toAbstract": "true"} + override fun foo() { + + } + +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/pushDown/PushDownTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/pushDown/PushDownTestGenerated.java index d47f68ff2cd..8267d05ad82 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/pushDown/PushDownTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/pushDown/PushDownTestGenerated.java @@ -59,6 +59,12 @@ public class PushDownTestGenerated extends AbstractPushDownTest { doTest(fileName); } + @TestMetadata("dropVisibilityOnGeneratedOverride.kt") + public void testDropVisibilityOnGeneratedOverride() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pushDown/dropVisibilityOnGeneratedOverride.kt"); + doTest(fileName); + } + @TestMetadata("finalClass.kt") public void testFinalClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pushDown/finalClass.kt");