disable lambda completion after inserted qualifier

This commit is contained in:
Anna Kozlova
2013-12-12 17:24:46 +04:00
parent 3c20d47095
commit df47230afe
3 changed files with 19 additions and 1 deletions
@@ -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
@@ -0,0 +1,9 @@
class Test {
interface I {
void foo();
}
{
I i = Test::<caret>
}
}
@@ -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()));