new inference: diamond in lambda return workaround

This commit is contained in:
Anna Kozlova
2014-03-03 13:43:46 +01:00
parent 7fa42a6384
commit ab2348a911
3 changed files with 15 additions and 1 deletions
@@ -116,7 +116,8 @@ public class ExpressionCompatibilityConstraint extends InputOutputConstraintForm
params[i] = typeParams[i];
}
}
final PsiSubstitutor siteSubstitutor = resolveResult instanceof MethodCandidateInfo ? ((MethodCandidateInfo)resolveResult).getSiteSubstitutor() : PsiSubstitutor.EMPTY;
final PsiSubstitutor siteSubstitutor = resolveResult instanceof MethodCandidateInfo && method != null && !method.isConstructor()
? ((MethodCandidateInfo)resolveResult).getSiteSubstitutor() : PsiSubstitutor.EMPTY;
for (PsiTypeParameter typeParameter : siteSubstitutor.getSubstitutionMap().keySet()) {
substitutor = substitutor.put(typeParameter, substitutor.substitute(siteSubstitutor.substitute(typeParameter)));
}
@@ -0,0 +1,9 @@
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Test {
Set<String> collect(Stream<String> map){
return map.collect(Collectors.toCollection(() -> new LinkedHashSet<>()));
}
}
@@ -138,6 +138,10 @@ public class NewLambdaHighlightingTest extends LightDaemonAnalyzerTestCase {
doTest();
}
public void testDiamondInLambdaReturn() throws Exception {
doTest();
}
private void doTest() {
doTest(false);
}