fixed: dataFlowInfoForArguments was not set in call candidate context

This commit is contained in:
Svetlana Isakova
2013-08-16 18:59:47 +04:00
parent 52848f6aa4
commit a6162cf5ba
3 changed files with 14 additions and 16 deletions
@@ -95,7 +95,7 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
@NotNull ResolutionResultsCache resolutionResultsCache @NotNull ResolutionResultsCache resolutionResultsCache
) { ) {
return create(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition, return create(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition,
resolutionResultsCache); resolutionResultsCache, dataFlowInfoForArguments);
} }
@Override @Override
@@ -17,10 +17,12 @@
package org.jetbrains.jet.lang.resolve.calls.context; package org.jetbrains.jet.lang.resolve.calls.context;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.psi.Call; import org.jetbrains.jet.lang.psi.Call;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallImpl; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallImpl;
import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy; import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -43,9 +45,11 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
@NotNull ContextDependency contextDependency, @NotNull ContextDependency contextDependency,
@NotNull CheckValueArgumentsMode checkArguments, @NotNull CheckValueArgumentsMode checkArguments,
@NotNull ExpressionPosition expressionPosition, @NotNull ExpressionPosition expressionPosition,
@NotNull ResolutionResultsCache resolutionResultsCache @NotNull ResolutionResultsCache resolutionResultsCache,
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
) { ) {
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition, resolutionResultsCache, null); super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, expressionPosition, resolutionResultsCache,
dataFlowInfoForArguments);
this.candidateCall = candidateCall; this.candidateCall = candidateCall;
this.tracing = tracing; this.tracing = tracing;
} }
@@ -57,7 +61,7 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
return new CallCandidateResolutionContext<D>( return new CallCandidateResolutionContext<D>(
candidateCall, tracing, trace, context.scope, call, context.expectedType, candidateCall, tracing, trace, context.scope, call, context.expectedType,
context.dataFlowInfo, context.contextDependency, context.checkArguments, context.dataFlowInfo, context.contextDependency, context.checkArguments,
context.expressionPosition, context.resolutionResultsCache); context.expressionPosition, context.resolutionResultsCache, context.dataFlowInfoForArguments);
} }
public static <D extends CallableDescriptor> CallCandidateResolutionContext<D> create( public static <D extends CallableDescriptor> CallCandidateResolutionContext<D> create(
@@ -68,19 +72,11 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
public static <D extends CallableDescriptor> CallCandidateResolutionContext<D> createForCallBeingAnalyzed( public static <D extends CallableDescriptor> CallCandidateResolutionContext<D> createForCallBeingAnalyzed(
@NotNull ResolvedCallImpl<D> candidateCall, @NotNull BasicCallResolutionContext context, @NotNull TracingStrategy tracing @NotNull ResolvedCallImpl<D> candidateCall, @NotNull BasicCallResolutionContext context, @NotNull TracingStrategy tracing
) {
return createForCallBeingAnalyzed(candidateCall, context, context.call, context.contextDependency,
context.checkArguments, tracing, context.resolutionResultsCache);
}
public static <D extends CallableDescriptor> CallCandidateResolutionContext<D> createForCallBeingAnalyzed(
@NotNull ResolvedCallImpl<D> candidateCall, @NotNull ResolutionContext context, @NotNull Call call,
@NotNull ContextDependency contextDependency, @NotNull CheckValueArgumentsMode checkArguments, @NotNull TracingStrategy tracing,
@NotNull ResolutionResultsCache resolutionResultsCache
) { ) {
return new CallCandidateResolutionContext<D>( return new CallCandidateResolutionContext<D>(
candidateCall, tracing, context.trace, context.scope, call, context.expectedType, candidateCall, tracing, context.trace, context.scope, context.call, context.expectedType,
context.dataFlowInfo, contextDependency, checkArguments, context.expressionPosition, resolutionResultsCache); context.dataFlowInfo, context.contextDependency, context.checkArguments, context.expressionPosition,
context.resolutionResultsCache, context.dataFlowInfoForArguments);
} }
@Override @Override
@@ -95,7 +91,7 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
) { ) {
return new CallCandidateResolutionContext<D>( return new CallCandidateResolutionContext<D>(
candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency,
checkArguments, expressionPosition, resolutionResultsCache); checkArguments, expressionPosition, resolutionResultsCache, dataFlowInfoForArguments);
} }
@Override @Override
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.types.JetType;
public abstract class CallResolutionContext<Context extends CallResolutionContext<Context>> extends ResolutionContext<Context> { public abstract class CallResolutionContext<Context extends CallResolutionContext<Context>> extends ResolutionContext<Context> {
public final Call call; public final Call call;
public final CheckValueArgumentsMode checkArguments; public final CheckValueArgumentsMode checkArguments;
@NotNull
public final MutableDataFlowInfoForArguments dataFlowInfoForArguments; public final MutableDataFlowInfoForArguments dataFlowInfoForArguments;
protected CallResolutionContext( protected CallResolutionContext(
@@ -41,6 +42,7 @@ public abstract class CallResolutionContext<Context extends CallResolutionContex
@NotNull CheckValueArgumentsMode checkArguments, @NotNull CheckValueArgumentsMode checkArguments,
@NotNull ExpressionPosition expressionPosition, @NotNull ExpressionPosition expressionPosition,
@NotNull ResolutionResultsCache resolutionResultsCache, @NotNull ResolutionResultsCache resolutionResultsCache,
@SuppressWarnings("NullableProblems")
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
) { ) {
super(trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache); super(trace, scope, expectedType, dataFlowInfo, expressionPosition, contextDependency, resolutionResultsCache);