From 1952eeec4f239bda7e7ff30b373b002b06165c74 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 6 Sep 2013 16:43:02 +0200 Subject: [PATCH] IDEA-112567 Don't show any completion variants after method reference and dot --- .../completion/JavaCompletionContributor.java | 5 ++++- .../daemon/lambda/Normal8CompletionTest.groovy | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 26b9fdb52086..151619aac383 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -35,6 +35,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.patterns.ElementPattern; import com.intellij.patterns.PatternCondition; +import com.intellij.patterns.PsiJavaElementPattern; import com.intellij.patterns.PsiNameValuePairPattern; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; @@ -78,6 +79,8 @@ public class JavaCompletionContributor extends CompletionContributor { public static final ElementPattern ANNOTATION_NAME = psiElement(). withParents(PsiJavaCodeReferenceElement.class, PsiAnnotation.class).afterLeaf("@"); + private static final PsiJavaElementPattern.Capture UNEXPECTED_REFERENCE_AFTER_DOT = + psiElement().afterLeaf(".").insideStarting(psiExpressionStatement()); private static JavaCompletionData getCompletionData(LanguageLevel level) { final Set> entries = ourCompletionData.entrySet(); @@ -203,7 +206,7 @@ public class JavaCompletionContributor extends CompletionContributor { return; } - if (AFTER_NUMBER_LITERAL.accepts(position)) { + if (AFTER_NUMBER_LITERAL.accepts(position) || UNEXPECTED_REFERENCE_AFTER_DOT.accepts(position)) { _result.stopHere(); return; } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.groovy index 9fcddbb0fb21..9c45a5ecd539 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/Normal8CompletionTest.groovy @@ -50,4 +50,13 @@ class Foo {{ Object o = Fox }} class Foo {{ Object o = Foo::x }} """ } + + public void testNoSuggestionsAfterMethodReferenceAndDot() { + String text = """ +class Foo {{ Object o = StringBuilder::append. }} +""" + myFixture.configureByText "a.java", text + assertEmpty(myFixture.completeBasic()) + myFixture.checkResult(text) + } }