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 988cd9755cca..645cceec3d6d 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 @@ -69,16 +69,15 @@ public class InferenceSession { } public InferenceSession(PsiTypeParameter[] typeParams, - PsiParameter[] parameters, - PsiExpression[] args, PsiSubstitutor siteSubstitutor, - PsiElement parent, PsiManager manager) { myManager = manager; mySiteSubstitutor = siteSubstitutor; initBounds(typeParams); + } + public void initExpressionConstraints(PsiParameter[] parameters, PsiExpression[] args, PsiElement parent) { final Pair pair = getPair(parent); if (parameters.length > 0) { for (int i = 0; i < args.length; i++) { diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiGraphInferenceHelper.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiGraphInferenceHelper.java index 84c8b7cef80f..ebec24e79108 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiGraphInferenceHelper.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/PsiGraphInferenceHelper.java @@ -38,8 +38,8 @@ public class PsiGraphInferenceHelper implements PsiInferenceHelper { @NotNull PsiSubstitutor partialSubstitutor, @Nullable PsiElement parent, @NotNull ParameterTypeInferencePolicy policy) { - final InferenceSession inferenceSession = - new InferenceSession(new PsiTypeParameter[]{typeParameter}, parameters, arguments, partialSubstitutor, parent, myManager); + final InferenceSession inferenceSession = new InferenceSession(new PsiTypeParameter[]{typeParameter}, partialSubstitutor, myManager); + inferenceSession.initExpressionConstraints(parameters, arguments, parent); return inferenceSession.infer(parameters, arguments, parent).substitute(typeParameter); } @@ -53,8 +53,8 @@ public class PsiGraphInferenceHelper implements PsiInferenceHelper { @NotNull ParameterTypeInferencePolicy policy, @NotNull LanguageLevel languageLevel) { if (typeParameters.length == 0) return partialSubstitutor; - final InferenceSession inferenceSession = - new InferenceSession(typeParameters, parameters, arguments, partialSubstitutor, parent, myManager); + final InferenceSession inferenceSession = new InferenceSession(typeParameters, partialSubstitutor, myManager); + inferenceSession.initExpressionConstraints(parameters, arguments, parent); return inferenceSession.infer(parameters, arguments, parent); } 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 8fe69b24c06d..830fad91d650 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 @@ -83,11 +83,9 @@ public class ExpressionCompatibilityConstraint extends InputOutputConstraintForm InferenceSession callSession = null; if (method != null && !method.isConstructor()) { returnType = method.getReturnType(); - final PsiParameter[] parameters = method.getParameterList().getParameters(); if (returnType != null) { - callSession = new InferenceSession(method.getTypeParameters(), parameters, - argumentList.getExpressions(), - PsiSubstitutor.EMPTY, null, myExpression.getManager()); + callSession = new InferenceSession(method.getTypeParameters(), + PsiSubstitutor.EMPTY, myExpression.getManager()); } } else if (myExpression instanceof PsiNewExpression) { //default constructor @@ -97,9 +95,7 @@ public class ExpressionCompatibilityConstraint extends InputOutputConstraintForm if (psiClass instanceof PsiClass) { returnType = JavaPsiFacade.getElementFactory(argumentList.getProject()).createType((PsiClass)psiClass, PsiSubstitutor.EMPTY); callSession = new InferenceSession(((PsiClass)psiClass).getTypeParameters(), - PsiParameter.EMPTY_ARRAY, - argumentList.getExpressions(), - PsiSubstitutor.EMPTY, null, myExpression.getManager()); + PsiSubstitutor.EMPTY, myExpression.getManager()); } } }