From a098977c5456a14a4b286a23a5e6e35da84d225e Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 11 May 2016 12:36:07 +0300 Subject: [PATCH] Do not try to make object's containing class abstract #KT-11466 Fixed --- .../kotlin/idea/quickfix/QuickFixRegistrar.kt | 3 ++- .../abstract/abstractPropertyInCompanionObject.kt | 10 ++++++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/abstract/abstractPropertyInCompanionObject.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index 026172d7f6d..dcd9e2272d4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageInWho import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens.* import org.jetbrains.kotlin.psi.KtClass +import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.NO_REFLECTION_IN_CLASS_PATH @@ -71,7 +72,7 @@ class QuickFixRegistrar : QuickFixContributor { MUST_BE_INITIALIZED_OR_BE_ABSTRACT.registerFactory(InitializePropertyQuickFixFactory) MUST_BE_INITIALIZED.registerFactory(InitializePropertyQuickFixFactory) - val addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, KtClass::class.java) + val addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, KtClassOrObject::class.java) ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS.registerFactory(removeAbstractModifierFactory, addAbstractToClassFactory) ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS.registerFactory(removeAbstractModifierFactory, addAbstractToClassFactory) diff --git a/idea/testData/quickfix/abstract/abstractPropertyInCompanionObject.kt b/idea/testData/quickfix/abstract/abstractPropertyInCompanionObject.kt new file mode 100644 index 00000000000..ea4726dbf7b --- /dev/null +++ b/idea/testData/quickfix/abstract/abstractPropertyInCompanionObject.kt @@ -0,0 +1,10 @@ +// "Make 'Owner' abstract" "false" +// ERROR: Abstract property 'x' in non-abstract class 'Companion' +// ACTION: Make 'x' not abstract +// ACTION: Make internal + +class Owner { + companion object { + abstract val x: Int + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 80309557df2..78212795280 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -75,6 +75,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("abstractPropertyInCompanionObject.kt") + public void testAbstractPropertyInCompanionObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/abstract/abstractPropertyInCompanionObject.kt"); + doTest(fileName); + } + @TestMetadata("abstractPropertyInNonAbstractClass1.kt") public void testAbstractPropertyInNonAbstractClass1() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/abstract/abstractPropertyInNonAbstractClass1.kt");