IDEA-155188 Lambda auto completion for incomplete overloaded method fails

This commit is contained in:
peter
2016-04-25 19:44:21 +02:00
parent f86998ba3a
commit 3b725bc33e
3 changed files with 19 additions and 0 deletions

View File

@@ -273,6 +273,13 @@ public class JavaCompletionUtil {
PsiType qualifierType = LambdaUtil.getLambdaParameterFromType(functionalInterfaceType, parameterIndex);
if (qualifierType == null) return;
if (qualifierType instanceof PsiWildcardType) {
PsiType bound = ((PsiWildcardType)qualifierType).getBound();
if (bound != null) {
qualifierType = bound;
}
}
PsiReferenceExpression fakeRef = createReference("xxx.xxx", createContextWithXxxVariable(element, qualifierType));
set.addAll(processJavaQualifiedReference(fakeRef.getReferenceNameElement(), fakeRef, elementFilter, options, matcher, parameters));
});

View File

@@ -0,0 +1,8 @@
import java.util.stream.*;
import java.util.*;
class Foo {
public static void main(List<String> list) {
list.stream().collect(Collectors.toMap(o -> o.sub<caret>))
}
}

View File

@@ -240,6 +240,10 @@ class Test88 {
configureByTestName()
myFixture.assertPreferredCompletionItems(0, 'toString', 'wait')
}
public void testLambdaWithSuperWildcardInAmbiguousCall() {
configureByTestName()
myFixture.assertPreferredCompletionItems(0, 'substring', 'substring', 'subSequence')
}
public void testUnexpectedLambdaInAmbiguousCall() { doAntiTest() }
public void testNoCollectorsInComment() { doAntiTest() }