From 8e59d3e379949ca554229762814d3e60d12d9dae Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 10 Oct 2017 14:55:46 +0300 Subject: [PATCH] Handle modifiers correctly in "val to object" #KT-18919 Fixed --- .../kotlin/idea/intentions/ValToObjectIntention.kt | 3 +-- idea/testData/intentions/valToObject/expected.kt | 6 ++++++ idea/testData/intentions/valToObject/expected.kt.after | 6 ++++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 idea/testData/intentions/valToObject/expected.kt create mode 100644 idea/testData/intentions/valToObject/expected.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ValToObjectIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ValToObjectIntention.kt index 37b298efd7c..5da390ba68d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ValToObjectIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ValToObjectIntention.kt @@ -41,14 +41,13 @@ class ValToObjectIntention : SelfTargetingIntention(KtProperty::clas } override fun applyTo(element: KtProperty, editor: Editor?) { - val modifier = element.visibilityModifier() val name = element.name ?: return val objectLiteral = element.initializer as? KtObjectLiteralExpression ?: return val declaration = objectLiteral.objectDeclaration val superTypeList = declaration.getSuperTypeList() val body = declaration.getBody() ?: return - val prefix = modifier?.text?.plus(" ") ?: "" + val prefix = element.modifierList?.text?.plus(" ") ?: "" val superTypesText = superTypeList?.text?.plus(" ") ?: "" val replacementText = "${prefix}object $name: $superTypesText${body.text}" diff --git a/idea/testData/intentions/valToObject/expected.kt b/idea/testData/intentions/valToObject/expected.kt new file mode 100644 index 00000000000..5007cbd85f1 --- /dev/null +++ b/idea/testData/intentions/valToObject/expected.kt @@ -0,0 +1,6 @@ +// SKIP_ERRORS_BEFORE +// SKIP_ERRORS_AFTER + +expect interface EmptyInterface + +expect val ofInterface = object : EmptyInterface{} diff --git a/idea/testData/intentions/valToObject/expected.kt.after b/idea/testData/intentions/valToObject/expected.kt.after new file mode 100644 index 00000000000..f556a729384 --- /dev/null +++ b/idea/testData/intentions/valToObject/expected.kt.after @@ -0,0 +1,6 @@ +// SKIP_ERRORS_BEFORE +// SKIP_ERRORS_AFTER + +expect interface EmptyInterface + +expect object ofInterface : EmptyInterface {} diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 75af0ee0077..445d1315985 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -16214,6 +16214,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("expected.kt") + public void testExpected() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/valToObject/expected.kt"); + doTest(fileName); + } + @TestMetadata("getter.kt") public void testGetter() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/valToObject/getter.kt");