Handle modifiers correctly in "val to object" #KT-18919 Fixed

This commit is contained in:
Mikhail Glukhikh
2017-10-10 14:55:46 +03:00
committed by Mikhail Glukhikh
parent 0b5b5d8e89
commit 8e59d3e379
4 changed files with 19 additions and 2 deletions
@@ -41,14 +41,13 @@ class ValToObjectIntention : SelfTargetingIntention<KtProperty>(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}"
+6
View File
@@ -0,0 +1,6 @@
// SKIP_ERRORS_BEFORE
// SKIP_ERRORS_AFTER
expect interface EmptyInterface
expect val <caret>ofInterface = object : EmptyInterface{}
@@ -0,0 +1,6 @@
// SKIP_ERRORS_BEFORE
// SKIP_ERRORS_AFTER
expect interface EmptyInterface
expect object ofInterface : EmptyInterface {}
@@ -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");