diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 4cdb0f312b93..f5980c4f8757 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -448,8 +448,7 @@ public class LambdaUtil { if (lambdaIdx > -1) { PsiType cachedType = null; - final Map> currentMethodCandidates = MethodCandidateInfo.CURRENT_CANDIDATE.get(); - final Pair method = currentMethodCandidates != null ? currentMethodCandidates.get(parent) : null; + final Pair method = MethodCandidateInfo.getCurrentMethod(parent); if (method != null) { final PsiParameter[] parameters = method.first.getParameterList().getParameters(); cachedType = lambdaIdx < parameters.length ? method.second.substitute(getNormalizedType(parameters[adjustLambdaIdx(lambdaIdx, method.first, parameters)])) : null; @@ -698,14 +697,8 @@ public class LambdaUtil { if (parent instanceof PsiExpressionList) { final PsiElement gParent = parent.getParent(); if (gParent instanceof PsiCall) { - final Map> map = MethodCandidateInfo.CURRENT_CANDIDATE.get(); - if (map != null) { - final Pair pair = map.get(parent); - myMethod = pair != null ? pair.first : null; - } - else { - myMethod = null; - } + final Pair pair = MethodCandidateInfo.getCurrentMethod(parent); + myMethod = pair != null ? pair.first : null; if (myMethod == null) { myMethod = ((PsiCall)gParent).resolveMethod(); } diff --git a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java index d72d3d8414a4..3a0bfddaf36f 100644 --- a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java +++ b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java @@ -223,6 +223,12 @@ public class MethodCandidateInfo extends CandidateInfo{ return myArgumentList != null && myArgumentList.isValid(); } + + public static Pair getCurrentMethod(PsiElement context) { + final Map> currentMethodCandidates = CURRENT_CANDIDATE.get(); + return currentMethodCandidates != null ? currentMethodCandidates.get(context) : null; + } + public static class ApplicabilityLevel { public static final int NOT_APPLICABLE = 1; public static final int VARARGS = 2; diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java index 5bedf781659c..4e2bccfc68f3 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java @@ -93,12 +93,9 @@ public class InferenceSession { private static Pair getPair(PsiElement parent) { if (parent instanceof PsiCallExpression) { - final Map> map = MethodCandidateInfo.CURRENT_CANDIDATE.get(); - if (map != null) { - final Pair pair = map.get(((PsiCallExpression)parent).getArgumentList()); - if (pair != null) { - return Pair.create(pair.first, (PsiCallExpression)parent); - } + final Pair pair = MethodCandidateInfo.getCurrentMethod(((PsiCallExpression)parent).getArgumentList()); + if (pair != null) { + return Pair.create(pair.first, (PsiCallExpression)parent); } } return null; diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/ExpressionCompatibilityConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/ExpressionCompatibilityConstraint.java index 6bb3e9a5fae5..3e818bed1ecc 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/ExpressionCompatibilityConstraint.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/ExpressionCompatibilityConstraint.java @@ -76,8 +76,7 @@ public class ExpressionCompatibilityConstraint extends InputOutputConstraintForm if (myExpression instanceof PsiCallExpression) { final PsiExpressionList argumentList = ((PsiCallExpression)myExpression).getArgumentList(); if (argumentList != null) { - final Map> map = MethodCandidateInfo.CURRENT_CANDIDATE.get(); - final Pair pair = map != null ? map.get(argumentList) : null; + final Pair pair = MethodCandidateInfo.getCurrentMethod(argumentList); final PsiMethod method = pair != null ? pair.first : ((PsiCallExpression)myExpression).resolveMethod(); PsiType returnType = null; InferenceSession callSession = null;