From 2a035a9a126377300379562718910d53749ab97a Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Mon, 9 Jul 2018 13:38:16 +0300 Subject: [PATCH] add method qualifier fix should be not available for unresolved qualified method call --- .../impl/quickfix/AddMethodQualifierFix.java | 2 +- .../NotAvailableIfQualifierExists.java | 15 +++++++++++++++ .../daemon/quickFix/AddMethodQualifierTest.java | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addMethodCallQualifier/NotAvailableIfQualifierExists.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodQualifierFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodQualifierFix.java index 317dae414994..9408d4e637d8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodQualifierFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodQualifierFix.java @@ -74,7 +74,7 @@ public class AddMethodQualifierFix implements IntentionAction { @Override public boolean isAvailable(@NotNull final Project project, final Editor editor, final PsiFile file) { final PsiMethodCallExpression element = myMethodCall.getElement(); - if (element == null || !element.isValid()) { + if (element == null || !element.isValid() || element.getMethodExpression().getQualifierExpression() != null) { return false; } if (myCandidates == null) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addMethodCallQualifier/NotAvailableIfQualifierExists.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addMethodCallQualifier/NotAvailableIfQualifierExists.java new file mode 100644 index 000000000000..48097c69e2bf --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addMethodCallQualifier/NotAvailableIfQualifierExists.java @@ -0,0 +1,15 @@ +class X { + public class ObjectValue { + public ObjectValue get(String name) { return null; } + } + + public class JsonObjectValue extends ObjectValue { + public int sizeInBytes() { return 0; } + } + + { + JsonObjectValue obj = null; + obj.get("href").sizeInBytes(); + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/AddMethodQualifierTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/AddMethodQualifierTest.java index ae910657e8bc..3d7e61c01451 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/AddMethodQualifierTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/AddMethodQualifierTest.java @@ -63,6 +63,11 @@ public class AddMethodQualifierTest extends JavaCodeInsightFixtureTestCase { doTestFix(); } + public void testNotAvailableIfQualifierExists() { + myFixture.configureByFile(getTestName(false) + ".java"); + assertNull(getQuickFix()); + } + private void doTestFix() { myFixture.configureByFile(getTestName(false) + "Before.java"); final AddMethodQualifierFix quickFix = getQuickFix();