diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToPropertyAccessFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToPropertyAccessFix.kt index e40e5077425..1e504320bfa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToPropertyAccessFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToPropertyAccessFix.kt @@ -19,12 +19,17 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.idea.intentions.getCallableDescriptor import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject -class ChangeToPropertyAccessFix(element: KtCallExpression) : KotlinQuickFixAction(element) { - override fun getFamilyName() = "Change to property access" +class ChangeToPropertyAccessFix( + element: KtCallExpression, + private val isObjectCall: Boolean) : KotlinQuickFixAction(element) { + + override fun getFamilyName() = if (isObjectCall) "Remove invocation" else "Change to property access" override fun getText() = familyName @@ -36,8 +41,9 @@ class ChangeToPropertyAccessFix(element: KtCallExpression) : KotlinQuickFixActio companion object : KotlinSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction? { val expression = diagnostic.psiElement.parent as? KtCallExpression ?: return null - if (expression is KtExpression && expression.valueArguments.isEmpty()) { - return ChangeToPropertyAccessFix(expression) + if (expression.valueArguments.isEmpty()) { + val isObjectCall = expression.calleeExpression?.getCallableDescriptor() is FakeCallableDescriptorForObject + return ChangeToPropertyAccessFix(expression, isObjectCall) } return null } diff --git a/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt b/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt new file mode 100644 index 00000000000..8fe09c598ea --- /dev/null +++ b/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt @@ -0,0 +1,8 @@ +// "Remove invocation" "true" +enum class Test { + A +} + +fun test() { + Test.A() +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt.after b/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt.after new file mode 100644 index 00000000000..987d83500b7 --- /dev/null +++ b/idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt.after @@ -0,0 +1,8 @@ +// "Remove invocation" "true" +enum class Test { + A +} + +fun test() { + Test.A +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt b/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt new file mode 100644 index 00000000000..830d02f709f --- /dev/null +++ b/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt @@ -0,0 +1,6 @@ +// "Remove invocation" "true" +object Test + +fun test() { + Test() +} \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt.after b/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt.after new file mode 100644 index 00000000000..b6f97f3c117 --- /dev/null +++ b/idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt.after @@ -0,0 +1,6 @@ +// "Remove invocation" "true" +object Test + +fun test() { + Test +} \ 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 5fdf40dee23..9363b0412a0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -11422,12 +11422,24 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/variables/changeToPropertyAccess"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("enumEntryCall.kt") + public void testEnumEntryCall() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeToPropertyAccess/enumEntryCall.kt"); + doTest(fileName); + } + @TestMetadata("nonSimpleName.kt") public void testNonSimpleName() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeToPropertyAccess/nonSimpleName.kt"); doTest(fileName); } + @TestMetadata("objectCall.kt") + public void testObjectCall() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeToPropertyAccess/objectCall.kt"); + doTest(fileName); + } + @TestMetadata("propertyCall.kt") public void testPropertyCall() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeToPropertyAccess/propertyCall.kt");