From 1de5b79ba137e2642e5544eaabe96e4536bc3952 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 16 Dec 2014 17:26:30 +0100 Subject: [PATCH] new inference: unify access to checked type --- .../java/PsiMethodReferenceExpressionImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java index ab331933b437..883a15584af3 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java @@ -84,14 +84,20 @@ public class PsiMethodReferenceExpressionImpl extends PsiReferenceExpressionBase MethodSignature signature) { return DuplicateConflictResolver.INSTANCE; } - - @Override - protected PsiType getInterfaceType(PsiMethodReferenceExpression reference) { - return functionalInterfaceType; - } }; - final ResolveResult[] result = resolver.resolve(this, getContainingFile(), false); + final Map map = LambdaUtil.getFunctionalTypeMap(); + final PsiType added = map.put(this, functionalInterfaceType); + final ResolveResult[] result; + try { + result = resolver.resolve(this, getContainingFile(), false); + } + finally { + if (added == null) { + map.remove(this); + } + } + final PsiMethodReferenceUtil.QualifierResolveResult qualifierResolveResult = PsiMethodReferenceUtil.getQualifierResolveResult(this); final int interfaceArity = interfaceMethod.getParameterList().getParametersCount(); for (ResolveResult resolveResult : result) {