From df47230afef99f277a1499612eef24c42b6feb73 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 12 Dec 2013 15:26:20 +0400 Subject: [PATCH] disable lambda completion after inserted qualifier --- .../completion/JavaSmartCompletionContributor.java | 5 ++++- .../NotAvailableInLambdaPositionAfterQualifier.java | 9 +++++++++ .../completion/SmartType18CompletionTest.java | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/smartType/NotAvailableInLambdaPositionAfterQualifier.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java index aa1293ad42e8..a72a49c46168 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaSmartCompletionContributor.java @@ -94,7 +94,10 @@ public class JavaSmartCompletionContributor extends CompletionContributor { @Override public boolean accepts(@NotNull PsiElement element, ProcessingContext context) { final PsiElement rulezzRef = element.getParent(); - return rulezzRef != null && LambdaUtil.isValidLambdaContext(rulezzRef.getParent()); + return rulezzRef != null && + rulezzRef instanceof PsiReferenceExpression && + ((PsiReferenceExpression)rulezzRef).getQualifier() == null && + LambdaUtil.isValidLambdaContext(rulezzRef.getParent()); }}); @Nullable diff --git a/java/java-tests/testData/codeInsight/completion/smartType/NotAvailableInLambdaPositionAfterQualifier.java b/java/java-tests/testData/codeInsight/completion/smartType/NotAvailableInLambdaPositionAfterQualifier.java new file mode 100644 index 000000000000..261bf0a7ddba --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/NotAvailableInLambdaPositionAfterQualifier.java @@ -0,0 +1,9 @@ +class Test { + interface I { + void foo(); + } + + { + I i = Test:: + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java index 08d2b5ba4ae3..24b2d43ed22b 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartType18CompletionTest.java @@ -73,6 +73,12 @@ public class SmartType18CompletionTest extends LightFixtureCompletionTestCase { doTest(); } + public void testNotAvailableInLambdaPositionAfterQualifier() throws Exception { + configureByFile("/" + getTestName(false) + ".java"); + assertNotNull(myItems); + assertTrue(myItems.length == 0); + } + public void testInferFromRawType() throws Exception { final PsiResolveHelperImpl helper = (PsiResolveHelperImpl)JavaPsiFacade.getInstance(getProject()).getResolveHelper(); helper.setTestHelper(new PsiGraphInferenceHelper(getPsiManager()));