lambda: check assignable takes into account wildcards (IDEA-108195)

This commit is contained in:
Anna Kozlova
2013-05-31 20:31:24 +04:00
parent 05ea097a2d
commit 6269653b12
3 changed files with 14 additions and 1 deletions
@@ -151,7 +151,7 @@ public class LambdaUtil {
}
return false;
}
final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(leftType);
final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(GenericsUtil.eliminateWildcards(leftType));
final PsiClass psiClass = resolveResult.getElement();
if (psiClass instanceof PsiAnonymousClass) {
return isAcceptable(lambdaExpression, ((PsiAnonymousClass)psiClass).getBaseClassType(), checkReturnType);
@@ -0,0 +1,12 @@
class Demo {
Function<Supplier<Double>, ? extends Supplier<Double>> mapper2 = (sa) -> () -> sa.get() + 1.0;
interface Supplier<T> {
public T get();
}
interface Function<T, R> {
public R apply(T t);
}
}
@@ -87,6 +87,7 @@ public class LambdaHighlightingTest extends LightDaemonAnalyzerTestCase {
public void testConditionalInferenceFromOppositePart() { doTest(); }
public void testDeclaredTypeParameterBoundsAndUnboundedWildcard() { doTest(); }
public void testConflictResolution() throws Exception {doTest();}
public void testIDEA108195() throws Exception {doTest();}
private void doTest() {
doTest(false);