inference: traverse to parent to get cached target type

GitOrigin-RevId: fb048adc50d2d112b951c87c0e6cf6f5fadc66a2
This commit is contained in:
Anna Kozlova
2019-05-15 17:58:54 +02:00
committed by intellij-monorepo-bot
parent 3e93a223e4
commit 7a61cdc1b7
3 changed files with 14 additions and 1 deletions

View File

@@ -360,7 +360,7 @@ public class LambdaUtil {
final Map<PsiElement, PsiType> map = ourFunctionTypes.get();
if (map != null) {
final PsiType type = map.get(expression);
final PsiType type = ObjectUtils.chooseNotNull(map.get(expression), map.get(element));
if (type != null) {
return type;
}

View File

@@ -0,0 +1,12 @@
import java.util.function.Predicate;
class Foo<T> {
public Foo(Predicate<T> p) {
}
void m(Predicate<String> p){
new Foo<>(p == null ? null : acc -> p.test<error descr="'test(java.lang.String)' in 'java.util.function.Predicate' cannot be applied to '(java.lang.Object)'">(acc)</error>);
new Foo<>(acc -> p.test<error descr="'test(java.lang.String)' in 'java.util.function.Predicate' cannot be applied to '(java.lang.Object)'">(acc)</error>);
}
}

View File

@@ -51,6 +51,7 @@ public class GraphInferenceHighlightingTest extends LightDaemonAnalyzerTestCase
public void testClsCapturedReturnTypes() { doTest(); }
public void testOverloadChooserOfReturnType() { doTest(); }
public void testIDEA98866() { doTest(); }
public void testDiamondWithConditionalInside() { doTest(); }
public void testIncompleteSubstitution() { doTest(); }
public void testJDK8028774() { doTest(); }
public void testErasedByReturnConstraint() { doTest(); }