removed unnecessary parameter
resolve argument without temporary trace (it's resolved and put to call trace in the beginning anyway)
This commit is contained in:
+2
-7
@@ -161,8 +161,7 @@ public class ArgumentTypeResolver {
|
|||||||
public JetTypeInfo getArgumentTypeInfo(
|
public JetTypeInfo getArgumentTypeInfo(
|
||||||
@Nullable JetExpression expression,
|
@Nullable JetExpression expression,
|
||||||
@NotNull CallResolutionContext<?> context,
|
@NotNull CallResolutionContext<?> context,
|
||||||
@NotNull ResolveArgumentsMode resolveArgumentsMode,
|
@NotNull ResolveArgumentsMode resolveArgumentsMode
|
||||||
@Nullable TemporaryBindingTrace traceToCommitForCall
|
|
||||||
) {
|
) {
|
||||||
if (expression == null) {
|
if (expression == null) {
|
||||||
return JetTypeInfo.create(null, context.dataFlowInfo);
|
return JetTypeInfo.create(null, context.dataFlowInfo);
|
||||||
@@ -176,12 +175,8 @@ public class ArgumentTypeResolver {
|
|||||||
}
|
}
|
||||||
ResolutionContext newContext = context.replaceExpectedType(TypeUtils.UNKNOWN_EXPECTED_TYPE).replaceContextDependency(
|
ResolutionContext newContext = context.replaceExpectedType(TypeUtils.UNKNOWN_EXPECTED_TYPE).replaceContextDependency(
|
||||||
ContextDependency.DEPENDENT);
|
ContextDependency.DEPENDENT);
|
||||||
JetTypeInfo result = expressionTypingServices.getTypeInfo(expression, newContext);
|
|
||||||
|
|
||||||
if (traceToCommitForCall != null) {
|
return expressionTypingServices.getTypeInfo(expression, newContext);
|
||||||
traceToCommitForCall.commit();
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -657,15 +657,12 @@ public class CandidateResolver {
|
|||||||
JetType effectiveExpectedType = getEffectiveExpectedType(valueParameterDescriptor, valueArgument);
|
JetType effectiveExpectedType = getEffectiveExpectedType(valueParameterDescriptor, valueArgument);
|
||||||
JetExpression argumentExpression = valueArgument.getArgumentExpression();
|
JetExpression argumentExpression = valueArgument.getArgumentExpression();
|
||||||
|
|
||||||
TemporaryBindingTrace traceToResolveArgument = TemporaryBindingTrace.create(
|
|
||||||
context.trace, "transient trace to resolve argument", argumentExpression);
|
|
||||||
JetType expectedType = substitutor.substitute(effectiveExpectedType, Variance.INVARIANT);
|
JetType expectedType = substitutor.substitute(effectiveExpectedType, Variance.INVARIANT);
|
||||||
DataFlowInfo dataFlowInfoForArgument = context.candidateCall.getDataFlowInfoForArguments().getInfo(valueArgument);
|
DataFlowInfo dataFlowInfoForArgument = context.candidateCall.getDataFlowInfoForArguments().getInfo(valueArgument);
|
||||||
CallResolutionContext<?> newContext = context.replaceBindingTrace(traceToResolveArgument)
|
CallResolutionContext<?> newContext = context.replaceExpectedType(expectedType).replaceDataFlowInfo(dataFlowInfoForArgument);
|
||||||
.replaceExpectedType(expectedType).replaceDataFlowInfo(dataFlowInfoForArgument);
|
|
||||||
|
|
||||||
JetTypeInfo typeInfoForCall = argumentTypeResolver.getArgumentTypeInfo(
|
JetTypeInfo typeInfoForCall = argumentTypeResolver.getArgumentTypeInfo(
|
||||||
argumentExpression, newContext, resolveFunctionArgumentBodies, traceToResolveArgument);
|
argumentExpression, newContext, resolveFunctionArgumentBodies);
|
||||||
context.candidateCall.getDataFlowInfoForArguments().updateInfo(valueArgument, typeInfoForCall.getDataFlowInfo());
|
context.candidateCall.getDataFlowInfoForArguments().updateInfo(valueArgument, typeInfoForCall.getDataFlowInfo());
|
||||||
|
|
||||||
JetType type = updateResultTypeForSmartCasts(typeInfoForCall.getType(), argumentExpression, dataFlowInfoForArgument, context.trace);
|
JetType type = updateResultTypeForSmartCasts(typeInfoForCall.getType(), argumentExpression, dataFlowInfoForArgument, context.trace);
|
||||||
@@ -771,7 +768,7 @@ public class CandidateResolver {
|
|||||||
CallResolutionContext<?> newContext = context.replaceDataFlowInfo(infoForArguments.getInfo(argument))
|
CallResolutionContext<?> newContext = context.replaceDataFlowInfo(infoForArguments.getInfo(argument))
|
||||||
.replaceBindingTrace(trace).replaceExpectedType(expectedType);
|
.replaceBindingTrace(trace).replaceExpectedType(expectedType);
|
||||||
JetTypeInfo typeInfoForCall = argumentTypeResolver.getArgumentTypeInfo(
|
JetTypeInfo typeInfoForCall = argumentTypeResolver.getArgumentTypeInfo(
|
||||||
expression, newContext, resolveFunctionArgumentBodies, null);
|
expression, newContext, resolveFunctionArgumentBodies);
|
||||||
JetType type = typeInfoForCall.getType();
|
JetType type = typeInfoForCall.getType();
|
||||||
infoForArguments.updateInfo(argument, typeInfoForCall.getDataFlowInfo());
|
infoForArguments.updateInfo(argument, typeInfoForCall.getDataFlowInfo());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user