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) + } }