added DataFlowInfoForArguments param to contexts
This commit is contained in:
+35
-5
@@ -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<BasicCallResolutionContext> {
|
||||
@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<BasicCallR
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache
|
||||
) {
|
||||
return new BasicCallResolutionContext(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache);
|
||||
return new BasicCallResolutionContext(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static BasicCallResolutionContext create(
|
||||
@NotNull ResolutionContext context, @NotNull Call call, @NotNull CheckValueArgumentsMode checkArguments,
|
||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
|
||||
) {
|
||||
return create(context.trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.resolveMode,
|
||||
checkArguments, context.expressionPosition, context.resolutionResultsCache, dataFlowInfoForArguments);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static BasicCallResolutionContext create(
|
||||
@NotNull ResolutionContext context, @NotNull Call call, @NotNull CheckValueArgumentsMode checkArguments
|
||||
) {
|
||||
return create(context.trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.resolveMode,
|
||||
checkArguments, context.expressionPosition, context.resolutionResultsCache);
|
||||
return create(context, call, checkArguments, null);
|
||||
}
|
||||
|
||||
private BasicCallResolutionContext(
|
||||
BindingTrace trace, JetScope scope, Call call, JetType expectedType,
|
||||
DataFlowInfo dataFlowInfo, ResolveMode resolveMode, CheckValueArgumentsMode checkArguments,
|
||||
ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache
|
||||
ExpressionPosition expressionPosition, ResolutionResultsCache resolutionResultsCache,
|
||||
MutableDataFlowInfoForArguments dataFlowInfoForArguments
|
||||
) {
|
||||
super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache);
|
||||
super(trace, scope, call, expectedType, dataFlowInfo, resolveMode, checkArguments, expressionPosition, resolutionResultsCache,
|
||||
dataFlowInfoForArguments);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
|
||||
@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;
|
||||
}
|
||||
|
||||
+9
-4
@@ -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<Context extends CallResolutionContex
|
||||
@NotNull ResolveMode resolveMode,
|
||||
@NotNull CheckValueArgumentsMode checkArguments,
|
||||
@NotNull ExpressionPosition expressionPosition,
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache
|
||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
|
||||
) {
|
||||
super(trace, scope, expectedType, dataFlowInfo, expressionPosition, resolveMode, resolutionResultsCache);
|
||||
this.call = call;
|
||||
this.checkArguments = checkArguments;
|
||||
if (checkArguments == CheckValueArgumentsMode.ENABLED) {
|
||||
dataFlowInfoForArguments = new DataFlowInfoForArgumentsImpl(call);
|
||||
if (dataFlowInfoForArguments != null) {
|
||||
this.dataFlowInfoForArguments = dataFlowInfoForArguments;
|
||||
}
|
||||
else if (checkArguments == CheckValueArgumentsMode.ENABLED) {
|
||||
this.dataFlowInfoForArguments = new DataFlowInfoForArgumentsImpl(call);
|
||||
}
|
||||
else {
|
||||
dataFlowInfoForArguments = MutableDataFlowInfoForArguments.WITHOUT_ARGUMENTS_CHECK;
|
||||
this.dataFlowInfoForArguments = MutableDataFlowInfoForArguments.WITHOUT_ARGUMENTS_CHECK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-5
@@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||
import org.jetbrains.jet.lang.resolve.calls.context.*;
|
||||
import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments;
|
||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallWithTrace;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
@@ -46,9 +47,11 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
||||
@NotNull Collection<ResolutionCandidate<D>> 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<D extends CallableDescriptor, F extends D> 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<D extends CallableDescriptor, F extends D> extends C
|
||||
) {
|
||||
ResolutionTask<D, F> newTask = new ResolutionTask<D, F>(
|
||||
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<D extends CallableDescriptor, F extends D> extends C
|
||||
public ResolutionTask<D, F> replaceCall(@NotNull Call newCall) {
|
||||
return new ResolutionTask<D, F>(
|
||||
candidates, reference, tracing, trace, scope, newCall, expectedType, dataFlowInfo, resolveMode, checkArguments,
|
||||
expressionPosition, resolutionResultsCache);
|
||||
expressionPosition, resolutionResultsCache, dataFlowInfoForArguments);
|
||||
}
|
||||
|
||||
public interface DescriptorCheckStrategy {
|
||||
|
||||
Reference in New Issue
Block a user