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:
Svetlana Isakova
2013-08-16 18:49:17 +04:00
parent 30b0a72c6b
commit 7fce75bc1f
2 changed files with 5 additions and 13 deletions
@@ -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());