From d30bcb3984fd8be6f73c20f92ffaec296bac69be Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 18 Nov 2013 12:20:54 +0100 Subject: [PATCH] new inference: accept unbounded wildcards (cherry picked from commit ff37a13662a6d85d7890755130e6a696db00c4a6) --- .../constraints/SubtypingConstraint.java | 5 ++++- .../lambda/newLambda/IDEA106670.java | 15 ++++++++++++++- .../daemon/lambda/NewLambdaHighlightingTest.java | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java index 074dd6d0312a..7930b287cd57 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java @@ -121,7 +121,10 @@ public class SubtypingConstraint implements ConstraintFormula { if (myS instanceof PsiWildcardType) { final PsiType sBound = ((PsiWildcardType)myS).getBound(); - if (sBound != null && ((PsiWildcardType)myS).isExtends()) { + if (sBound == null) { + return true; + } + if (((PsiWildcardType)myS).isExtends()) { constraints.add(new SubtypingConstraint(tBound, sBound, true)); return true; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IDEA106670.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IDEA106670.java index 65c343ff3782..0742a19add62 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IDEA106670.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IDEA106670.java @@ -12,7 +12,7 @@ class Test { zip(range1, range2, (f, s) -> asList(f, s)); zip(range1, range2, Test::asList); - BiFunction asList = Arrays::asList; + BiFunction asList = Test::asList; zip(range1, range2, asList); } @@ -27,3 +27,16 @@ class Test { return null; } } + +class Test1111 { + interface I { + R apply(); + } + + public void test(I i) { + bar(i); + } + + public static void bar(I i) {} +} + diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java index b487e84a9385..58e77321a8aa 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java @@ -58,7 +58,7 @@ public class NewLambdaHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } - public void _testIDEA106670() throws Exception { + public void testIDEA106670() throws Exception { doTest(); }