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 92c74b208e70..c6a8d713e1c2 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 @@ -263,6 +263,16 @@ public class MethodCandidateInfo extends CandidateInfo{ return currentMethodCandidates != null ? currentMethodCandidates.get(context) : null; } + public static void updateSubstitutor(PsiElement context, PsiSubstitutor newSubstitutor) { + final Map> currentMethodCandidates = CURRENT_CANDIDATE.get(); + if (currentMethodCandidates != null) { + final Pair pair = currentMethodCandidates.get(context); + if (pair != null) { + currentMethodCandidates.put(context, Pair.create(pair.first, newSubstitutor)); + } + } + } + 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 998e1bb4f2a5..4110c82ca56e 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 @@ -200,7 +200,12 @@ public class InferenceSession { inferenceVariable.ignoreInstantiation(); } doesNotContainFalseBound = repeatInferencePhases(true); - resolveBounds(myInferenceVariables.values(), mySiteSubstitutor, false); + + PsiSubstitutor substitutor = resolveBounds(myInferenceVariables.values(), mySiteSubstitutor, false); + LOG.assertTrue(parent != null); + PsiExpressionList argumentList = ((PsiCallExpression)parent).getArgumentList(); + LOG.assertTrue(argumentList != null); + MethodCandidateInfo.updateSubstitutor(argumentList, substitutor); } if (parameters != null && args != null) {