Wrong caption "Change to property access" for Quick Fix to convert class instantiation to object reference #KT-13870 Fixed (#1189)

This commit is contained in:
Toshiaki Kameyama
2017-07-18 22:47:43 +09:00
committed by Dmitry Jemerov
parent 987c7f5be8
commit 865f9d4c7e
6 changed files with 50 additions and 4 deletions
@@ -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<KtCallExpression>(element) {
override fun getFamilyName() = "Change to property access"
class ChangeToPropertyAccessFix(
element: KtCallExpression,
private val isObjectCall: Boolean) : KotlinQuickFixAction<KtCallExpression>(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<KtCallExpression>? {
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
}
@@ -0,0 +1,8 @@
// "Remove invocation" "true"
enum class Test {
A
}
fun test() {
Test.A<caret>()
}
@@ -0,0 +1,8 @@
// "Remove invocation" "true"
enum class Test {
A
}
fun test() {
Test.A
}
@@ -0,0 +1,6 @@
// "Remove invocation" "true"
object Test
fun test() {
Test<caret>()
}
@@ -0,0 +1,6 @@
// "Remove invocation" "true"
object Test
fun test() {
Test
}
@@ -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");