new inference: capture return type to emulate method call expression type

(cherry picked from commit a14b996d8c3efe5b1dc4a6fc3d45aea5feff6197)
This commit is contained in:
anna
2013-11-25 16:47:17 +01:00
parent 64c3ce5520
commit 8e571b3210
@@ -113,7 +113,10 @@ public class ExpressionCompatibilityConstraint extends InputOutputConstraintForm
callSession.initExpressionConstraints(parameters, args, myExpression);
substitutor = callSession.infer(parameters, args, myExpression, true);
}
constraints.add(new TypeCompatibilityConstraint(GenericsUtil.eliminateWildcards(myT, false), substitutor.substitute(returnType)));
final PsiType capturedReturnType = myExpression instanceof PsiMethodCallExpression
? PsiMethodCallExpressionImpl.captureReturnType((PsiMethodCallExpression)myExpression, method, returnType, substitutor)
: substitutor.substitute(returnType);
constraints.add(new TypeCompatibilityConstraint(GenericsUtil.eliminateWildcards(myT, false), capturedReturnType));
}
}
return true;