From 9607fd062049ab29050dd504ee2a6eb1f38a02a9 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 19 Aug 2016 14:36:14 +0300 Subject: [PATCH] Pull Up: Remove visibility modifiers on adding 'override' #KT-13535 Fixed --- ChangeLog.md | 4 ++++ .../idea/refactoring/pullUp/KotlinPullUpHelper.kt | 2 ++ .../refactoring/pullUp/k2j/usedPrivateToClass.kt.after | 2 +- .../pullUp/k2k/removeVisibilityOnOverride.kt | 8 ++++++++ .../pullUp/k2k/removeVisibilityOnOverride.kt.after | 10 ++++++++++ .../refactoring/pullUp/k2k/spaceAfterModifier.kt.after | 2 +- .../idea/refactoring/pullUp/PullUpTestGenerated.java | 6 ++++++ 7 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt create mode 100644 idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt.after diff --git a/ChangeLog.md b/ChangeLog.md index 10c4a8ecbc2..94bf6e4c8c7 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -97,6 +97,10 @@ These artifacts include extensions for the types available in the latter JDKs, s - [`KT-9125`](https://youtrack.jetbrains.com/issue/KT-9125) Support Type Hierarchy on references inside of super type call entries +#### Refactorings + +- [`KT-13535`](https://youtrack.jetbrains.com/issue/KT-13535) Pull Up: Remove visibility modifiers on adding 'override' + ## 1.0.4 ### Compiler diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHelper.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHelper.kt index 42c1effc70c..4a31c485a9c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHelper.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHelper.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.idea.refactoring.createJavaField import org.jetbrains.kotlin.idea.refactoring.safeDelete.removeOverrideModifier import org.jetbrains.kotlin.idea.util.anonymousObjectSuperTypeOrNull import org.jetbrains.kotlin.idea.util.psi.patternMatching.KotlinPsiUnifier +import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren @@ -359,6 +360,7 @@ class KotlinPullUpHelper( } else { member.addModifier(KtTokens.OVERRIDE_KEYWORD) + KtTokens.VISIBILITY_MODIFIERS.types.forEach { member.removeModifier(it as KtModifierKeywordToken) } (member as? KtNamedFunction)?.valueParameters?.forEach { it.dropDefaultValue() } } } diff --git a/idea/testData/refactoring/pullUp/k2j/usedPrivateToClass.kt.after b/idea/testData/refactoring/pullUp/k2j/usedPrivateToClass.kt.after index 9cc6bbffa28..f726550a31b 100644 --- a/idea/testData/refactoring/pullUp/k2j/usedPrivateToClass.kt.after +++ b/idea/testData/refactoring/pullUp/k2j/usedPrivateToClass.kt.after @@ -1,6 +1,6 @@ class B: A() { // INFO: {"checked": "true"} - protected override fun foo(): Int = 1 + override fun foo(): Int = 1 fun bar() = foo() + 1 } \ No newline at end of file diff --git a/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt b/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt new file mode 100644 index 00000000000..8d61ad7a583 --- /dev/null +++ b/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt @@ -0,0 +1,8 @@ +open class A { + +} + +open class B : A() { + // INFO: {"checked": "true", "toAbstract": "true"} + protected fun foo() {} +} \ No newline at end of file diff --git a/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt.after b/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt.after new file mode 100644 index 00000000000..7ffe8e3c26a --- /dev/null +++ b/idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt.after @@ -0,0 +1,10 @@ +abstract class A { + // INFO: {"checked": "true", "toAbstract": "true"} + protected abstract fun foo() + +} + +open class B : A() { + // INFO: {"checked": "true", "toAbstract": "true"} + override fun foo() {} +} \ No newline at end of file diff --git a/idea/testData/refactoring/pullUp/k2k/spaceAfterModifier.kt.after b/idea/testData/refactoring/pullUp/k2k/spaceAfterModifier.kt.after index b794de5218b..c6f55c2bf8f 100644 --- a/idea/testData/refactoring/pullUp/k2k/spaceAfterModifier.kt.after +++ b/idea/testData/refactoring/pullUp/k2k/spaceAfterModifier.kt.after @@ -5,5 +5,5 @@ abstract class Upper { open class Lower : Upper() { // INFO: {"checked": "true", "toAbstract": "true"} - protected override val moving: Int = 0 + override val moving: Int = 0 } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/pullUp/PullUpTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/pullUp/PullUpTestGenerated.java index 749fa94cffb..7242089d48f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/pullUp/PullUpTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/pullUp/PullUpTestGenerated.java @@ -223,6 +223,12 @@ public class PullUpTestGenerated extends AbstractPullUpTest { doKotlinTest(fileName); } + @TestMetadata("removeVisibilityOnOverride.kt") + public void testRemoveVisibilityOnOverride() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/removeVisibilityOnOverride.kt"); + doKotlinTest(fileName); + } + @TestMetadata("skipFakeOverrides.kt") public void testSkipFakeOverrides() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/pullUp/k2k/skipFakeOverrides.kt");