diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java index 65f9addcec7..b1647b05f83 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/BasicCallResolutionContext.java @@ -17,13 +17,32 @@ package org.jetbrains.jet.lang.resolve.calls.context; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.Call; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; +import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.JetType; public class BasicCallResolutionContext extends CallResolutionContext { + @NotNull + public static BasicCallResolutionContext create( + @NotNull BindingTrace trace, + @NotNull JetScope scope, + @NotNull Call call, + @NotNull JetType expectedType, + @NotNull DataFlowInfo dataFlowInfo, + @NotNull ResolveMode resolveMode, + @NotNull CheckValueArgumentsMode checkArguments, + @NotNull ExpressionPosition expressionPosition, + @NotNull ResolutionResultsCache resolutionResultsCache, + @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments + ) { + return new BasicCallResolutionContext(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, + expressionPosition, resolutionResultsCache, dataFlowInfoForArguments); + } + @NotNull public static BasicCallResolutionContext create( @NotNull BindingTrace trace, @@ -36,22 +55,33 @@ public class BasicCallResolutionContext extends CallResolutionContext @NotNull ExpressionPosition expressionPosition, @NotNull ResolutionResultsCache resolutionResultsCache ) { - super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache); + super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache, null); this.candidateCall = candidateCall; this.tracing = tracing; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java index b45d6f19b0d..a3105a6a09d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/CallResolutionContext.java @@ -17,6 +17,7 @@ package org.jetbrains.jet.lang.resolve.calls.context; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.Call; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; @@ -39,16 +40,20 @@ public abstract class CallResolutionContext extends C @NotNull Collection> candidates, @NotNull JetReferenceExpression reference, @NotNull TracingStrategy tracing, BindingTrace trace, JetScope scope, Call call, JetType expectedType, DataFlowInfo dataFlowInfo, ResolveMode resolveMode, CheckValueArgumentsMode checkArguments, - ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache + ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache, + @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments ) { - super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache); + super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache, + dataFlowInfoForArguments); this.candidates = candidates; this.reference = reference; this.tracing = tracing; @@ -63,7 +66,7 @@ public class ResolutionTask extends C this(candidates, reference, tracing != null ? tracing : TracingStrategyImpl.create(reference, context.call), context.trace, context.scope, context.call, context.expectedType, context.dataFlowInfo, context.resolveMode, context.checkArguments, - context.expressionPosition, context.resolutionResultsCache); + context.expressionPosition, context.resolutionResultsCache, context.dataFlowInfoForArguments); } public ResolutionTask( @@ -107,7 +110,7 @@ public class ResolutionTask extends C ) { ResolutionTask newTask = new ResolutionTask( candidates, reference, tracing, trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, - expressionPosition, resolutionResultsCache); + expressionPosition, resolutionResultsCache, dataFlowInfoForArguments); newTask.setCheckingStrategy(checkingStrategy); return newTask; } @@ -120,7 +123,7 @@ public class ResolutionTask extends C public ResolutionTask replaceCall(@NotNull Call newCall) { return new ResolutionTask( candidates, reference, tracing, trace, scope, newCall, expectedType, dataFlowInfo, resolveMode, checkArguments, - expressionPosition, resolutionResultsCache); + expressionPosition, resolutionResultsCache, dataFlowInfoForArguments); } public interface DescriptorCheckStrategy {