Made LabelResolver a singleton
This commit is contained in:
+5
-8
@@ -25,7 +25,6 @@ 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.MutableDataFlowInfoForArguments;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
public class BasicCallResolutionContext extends CallResolutionContext<BasicCallResolutionContext> {
|
public class BasicCallResolutionContext extends CallResolutionContext<BasicCallResolutionContext> {
|
||||||
private BasicCallResolutionContext(
|
private BasicCallResolutionContext(
|
||||||
@@ -37,13 +36,12 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
|||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull CheckValueArgumentsMode checkArguments,
|
@NotNull CheckValueArgumentsMode checkArguments,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache, labelResolver,
|
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||||
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +58,7 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
|||||||
boolean isAnnotationContext
|
boolean isAnnotationContext
|
||||||
) {
|
) {
|
||||||
return new BasicCallResolutionContext(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
return new BasicCallResolutionContext(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
||||||
new ResolutionResultsCacheImpl(), LabelResolver.create(), null,
|
new ResolutionResultsCacheImpl(), null,
|
||||||
callResolverExtension, isAnnotationContext, false);
|
callResolverExtension, isAnnotationContext, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +68,7 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
|||||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
|
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments
|
||||||
) {
|
) {
|
||||||
return new BasicCallResolutionContext(context.trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.contextDependency, checkArguments,
|
return new BasicCallResolutionContext(context.trace, context.scope, call, context.expectedType, context.dataFlowInfo, context.contextDependency, checkArguments,
|
||||||
context.resolutionResultsCache, context.labelResolver, dataFlowInfoForArguments, context.callResolverExtension,
|
context.resolutionResultsCache, dataFlowInfoForArguments, context.callResolverExtension,
|
||||||
context.isAnnotationContext, context.collectAllCandidates);
|
context.isAnnotationContext, context.collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,17 +87,16 @@ public class BasicCallResolutionContext extends CallResolutionContext<BasicCallR
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
return new BasicCallResolutionContext(
|
return new BasicCallResolutionContext(
|
||||||
trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||||
labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BasicCallResolutionContext replaceCall(@NotNull Call newCall) {
|
public BasicCallResolutionContext replaceCall(@NotNull Call newCall) {
|
||||||
return new BasicCallResolutionContext(
|
return new BasicCallResolutionContext(
|
||||||
trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||||
labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-7
@@ -29,7 +29,6 @@ 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;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
public final class CallCandidateResolutionContext<D extends CallableDescriptor> extends CallResolutionContext<CallCandidateResolutionContext<D>> {
|
public final class CallCandidateResolutionContext<D extends CallableDescriptor> extends CallResolutionContext<CallCandidateResolutionContext<D>> {
|
||||||
public final MutableResolvedCall<D> candidateCall;
|
public final MutableResolvedCall<D> candidateCall;
|
||||||
@@ -47,14 +46,13 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
|
|||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull CheckValueArgumentsMode checkArguments,
|
@NotNull CheckValueArgumentsMode checkArguments,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
@NotNull ReceiverValue explicitExtensionReceiverForInvoke,
|
@NotNull ReceiverValue explicitExtensionReceiverForInvoke,
|
||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache, labelResolver,
|
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||||
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
||||||
this.candidateCall = candidateCall;
|
this.candidateCall = candidateCall;
|
||||||
this.tracing = tracing;
|
this.tracing = tracing;
|
||||||
@@ -69,7 +67,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.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments,
|
context.resolutionResultsCache, context.dataFlowInfoForArguments,
|
||||||
context.callResolverExtension, explicitExtensionReceiverForInvoke, context.isAnnotationContext, context.collectAllCandidates);
|
context.callResolverExtension, explicitExtensionReceiverForInvoke, context.isAnnotationContext, context.collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +90,7 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
|
|||||||
return new CallCandidateResolutionContext<D>(
|
return new CallCandidateResolutionContext<D>(
|
||||||
candidateCall, tracing, context.trace, context.scope, context.call, context.expectedType,
|
candidateCall, tracing, context.trace, context.scope, context.call, context.expectedType,
|
||||||
context.dataFlowInfo, context.contextDependency, context.checkArguments, context.resolutionResultsCache,
|
context.dataFlowInfo, context.contextDependency, context.checkArguments, context.resolutionResultsCache,
|
||||||
context.labelResolver, context.dataFlowInfoForArguments, context.callResolverExtension, ReceiverValue.NO_RECEIVER,
|
context.dataFlowInfoForArguments, context.callResolverExtension, ReceiverValue.NO_RECEIVER,
|
||||||
context.isAnnotationContext, context.collectAllCandidates);
|
context.isAnnotationContext, context.collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,12 +102,11 @@ public final class CallCandidateResolutionContext<D extends CallableDescriptor>
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
return new CallCandidateResolutionContext<D>(
|
return new CallCandidateResolutionContext<D>(
|
||||||
candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
||||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, explicitExtensionReceiverForInvoke,
|
resolutionResultsCache, dataFlowInfoForArguments, callResolverExtension, explicitExtensionReceiverForInvoke,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-3
@@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.resolve.calls.model.DataFlowInfoForArgumentsImpl;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments;
|
import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArguments;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
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;
|
||||||
@@ -43,14 +42,13 @@ public abstract class CallResolutionContext<Context extends CallResolutionContex
|
|||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull CheckValueArgumentsMode checkArguments,
|
@NotNull CheckValueArgumentsMode checkArguments,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@SuppressWarnings("NullableProblems")
|
@SuppressWarnings("NullableProblems")
|
||||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, callResolverExtension,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
this.call = call;
|
this.call = call;
|
||||||
this.checkArguments = checkArguments;
|
this.checkArguments = checkArguments;
|
||||||
|
|||||||
+7
-12
@@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
import org.jetbrains.jet.lang.types.TypeUtils;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
public abstract class ResolutionContext<Context extends ResolutionContext<Context>> {
|
public abstract class ResolutionContext<Context extends ResolutionContext<Context>> {
|
||||||
public final BindingTrace trace;
|
public final BindingTrace trace;
|
||||||
@@ -33,7 +32,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
public final DataFlowInfo dataFlowInfo;
|
public final DataFlowInfo dataFlowInfo;
|
||||||
public final ContextDependency contextDependency;
|
public final ContextDependency contextDependency;
|
||||||
public final ResolutionResultsCache resolutionResultsCache;
|
public final ResolutionResultsCache resolutionResultsCache;
|
||||||
public final LabelResolver labelResolver;
|
|
||||||
public final CallResolverExtension callResolverExtension;
|
public final CallResolverExtension callResolverExtension;
|
||||||
public final boolean isAnnotationContext;
|
public final boolean isAnnotationContext;
|
||||||
public final boolean collectAllCandidates;
|
public final boolean collectAllCandidates;
|
||||||
@@ -45,7 +43,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
@NotNull DataFlowInfo dataFlowInfo,
|
@NotNull DataFlowInfo dataFlowInfo,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
@@ -56,7 +53,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
this.dataFlowInfo = dataFlowInfo;
|
this.dataFlowInfo = dataFlowInfo;
|
||||||
this.contextDependency = contextDependency;
|
this.contextDependency = contextDependency;
|
||||||
this.resolutionResultsCache = resolutionResultsCache;
|
this.resolutionResultsCache = resolutionResultsCache;
|
||||||
this.labelResolver = labelResolver;
|
|
||||||
this.callResolverExtension = callResolverExtension;
|
this.callResolverExtension = callResolverExtension;
|
||||||
this.isAnnotationContext = isAnnotationContext;
|
this.isAnnotationContext = isAnnotationContext;
|
||||||
this.collectAllCandidates = collectAllCandidates;
|
this.collectAllCandidates = collectAllCandidates;
|
||||||
@@ -69,7 +65,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -82,38 +77,38 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceBindingTrace(@NotNull BindingTrace trace) {
|
public Context replaceBindingTrace(@NotNull BindingTrace trace) {
|
||||||
if (this.trace == trace) return self();
|
if (this.trace == trace) return self();
|
||||||
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceDataFlowInfo(@NotNull DataFlowInfo newDataFlowInfo) {
|
public Context replaceDataFlowInfo(@NotNull DataFlowInfo newDataFlowInfo) {
|
||||||
if (newDataFlowInfo == dataFlowInfo) return self();
|
if (newDataFlowInfo == dataFlowInfo) return self();
|
||||||
return create(trace, scope, newDataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, scope, newDataFlowInfo, expectedType, contextDependency, resolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceExpectedType(@Nullable JetType newExpectedType) {
|
public Context replaceExpectedType(@Nullable JetType newExpectedType) {
|
||||||
if (newExpectedType == null) return replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE);
|
if (newExpectedType == null) return replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE);
|
||||||
if (expectedType == newExpectedType) return self();
|
if (expectedType == newExpectedType) return self();
|
||||||
return create(trace, scope, dataFlowInfo, newExpectedType, contextDependency, resolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, scope, dataFlowInfo, newExpectedType, contextDependency, resolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceScope(@NotNull JetScope newScope) {
|
public Context replaceScope(@NotNull JetScope newScope) {
|
||||||
if (newScope == scope) return self();
|
if (newScope == scope) return self();
|
||||||
return create(trace, newScope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, newScope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceContextDependency(@NotNull ContextDependency newContextDependency) {
|
public Context replaceContextDependency(@NotNull ContextDependency newContextDependency) {
|
||||||
if (newContextDependency == contextDependency) return self();
|
if (newContextDependency == contextDependency) return self();
|
||||||
return create(trace, scope, dataFlowInfo, expectedType, newContextDependency, resolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, scope, dataFlowInfo, expectedType, newContextDependency, resolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceResolutionResultsCache(@NotNull ResolutionResultsCache newResolutionResultsCache) {
|
public Context replaceResolutionResultsCache(@NotNull ResolutionResultsCache newResolutionResultsCache) {
|
||||||
if (newResolutionResultsCache == resolutionResultsCache) return self();
|
if (newResolutionResultsCache == resolutionResultsCache) return self();
|
||||||
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, newResolutionResultsCache, labelResolver, collectAllCandidates);
|
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, newResolutionResultsCache, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -123,6 +118,6 @@ public abstract class ResolutionContext<Context extends ResolutionContext<Contex
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Context replaceCollectAllCandidates(boolean newCollectAllCandidates) {
|
public Context replaceCollectAllCandidates(boolean newCollectAllCandidates) {
|
||||||
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, labelResolver, newCollectAllCandidates);
|
return create(trace, scope, dataFlowInfo, expectedType, contextDependency, resolutionResultsCache, newCollectAllCandidates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-6
@@ -22,7 +22,6 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolverExtension;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionContext> {
|
public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionContext> {
|
||||||
private SimpleResolutionContext(
|
private SimpleResolutionContext(
|
||||||
@@ -32,12 +31,11 @@ public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionC
|
|||||||
@NotNull DataFlowInfo dataFlowInfo,
|
@NotNull DataFlowInfo dataFlowInfo,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, callResolverExtension,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +48,7 @@ public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionC
|
|||||||
@NotNull CallResolverExtension callResolverExtension
|
@NotNull CallResolverExtension callResolverExtension
|
||||||
) {
|
) {
|
||||||
this(trace, scope, expectedType, dataFlowInfo, contextDependency, new ResolutionResultsCacheImpl(),
|
this(trace, scope, expectedType, dataFlowInfo, contextDependency, new ResolutionResultsCacheImpl(),
|
||||||
LabelResolver.create(), callResolverExtension, false, false);
|
callResolverExtension, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,11 +59,10 @@ public class SimpleResolutionContext extends ResolutionContext<SimpleResolutionC
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
return new SimpleResolutionContext(
|
return new SimpleResolutionContext(
|
||||||
trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, callResolverExtension,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-7
@@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.resolve.calls.model.MutableDataFlowInfoForArgument
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.model.MutableResolvedCall;
|
import org.jetbrains.jet.lang.resolve.calls.model.MutableResolvedCall;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.expressions.LabelResolver;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@@ -54,7 +53,6 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
|||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull CheckValueArgumentsMode checkArguments,
|
@NotNull CheckValueArgumentsMode checkArguments,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
@Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments,
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
@NotNull Collection<MutableResolvedCall<F>> resolvedCalls,
|
@NotNull Collection<MutableResolvedCall<F>> resolvedCalls,
|
||||||
@@ -62,7 +60,7 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
|||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
super(trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, resolutionResultsCache,
|
||||||
labelResolver, dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
dataFlowInfoForArguments, callResolverExtension, isAnnotationContext, collectAllCandidates);
|
||||||
this.candidates = candidates;
|
this.candidates = candidates;
|
||||||
this.resolvedCalls = resolvedCalls;
|
this.resolvedCalls = resolvedCalls;
|
||||||
this.tracing = tracing;
|
this.tracing = tracing;
|
||||||
@@ -76,7 +74,7 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
|||||||
this(candidates, tracing,
|
this(candidates, tracing,
|
||||||
context.trace, context.scope, context.call,
|
context.trace, context.scope, context.call,
|
||||||
context.expectedType, context.dataFlowInfo, context.contextDependency, context.checkArguments,
|
context.expectedType, context.dataFlowInfo, context.contextDependency, context.checkArguments,
|
||||||
context.resolutionResultsCache, context.labelResolver, context.dataFlowInfoForArguments,
|
context.resolutionResultsCache, context.dataFlowInfoForArguments,
|
||||||
context.callResolverExtension, Lists.<MutableResolvedCall<F>>newArrayList(), context.isAnnotationContext, context.collectAllCandidates);
|
context.callResolverExtension, Lists.<MutableResolvedCall<F>>newArrayList(), context.isAnnotationContext, context.collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,12 +119,11 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
ResolutionTask<D, F> newTask = new ResolutionTask<D, F>(
|
ResolutionTask<D, F> newTask = new ResolutionTask<D, F>(
|
||||||
candidates, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
candidates, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
||||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, resolvedCalls, isAnnotationContext,
|
resolutionResultsCache, dataFlowInfoForArguments, callResolverExtension, resolvedCalls, isAnnotationContext,
|
||||||
collectAllCandidates);
|
collectAllCandidates);
|
||||||
newTask.setCheckingStrategy(checkingStrategy);
|
newTask.setCheckingStrategy(checkingStrategy);
|
||||||
return newTask;
|
return newTask;
|
||||||
@@ -135,7 +132,7 @@ public class ResolutionTask<D extends CallableDescriptor, F extends D> extends C
|
|||||||
public ResolutionTask<D, F> replaceCall(@NotNull Call newCall) {
|
public ResolutionTask<D, F> replaceCall(@NotNull Call newCall) {
|
||||||
return new ResolutionTask<D, F>(
|
return new ResolutionTask<D, F>(
|
||||||
candidates, tracing, trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
candidates, tracing, trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments,
|
||||||
resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, resolvedCalls,
|
resolutionResultsCache, dataFlowInfoForArguments, callResolverExtension, resolvedCalls,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -376,8 +376,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
) {
|
) {
|
||||||
String labelName = expression.getLabelName();
|
String labelName = expression.getLabelName();
|
||||||
if (labelName != null) {
|
if (labelName != null) {
|
||||||
LabelResolver.LabeledReceiverResolutionResult resolutionResult = context.labelResolver.resolveThisLabel(
|
LabelResolver.LabeledReceiverResolutionResult resolutionResult =
|
||||||
expression.getInstanceReference(), expression.getTargetLabel(), context, Name.identifierForLabel(labelName));
|
LabelResolver.INSTANCE.resolveThisLabel(
|
||||||
|
expression.getInstanceReference(), expression.getTargetLabel(), context, Name.identifierForLabel(labelName));
|
||||||
if (onlyClassReceivers && resolutionResult.success()) {
|
if (onlyClassReceivers && resolutionResult.success()) {
|
||||||
if (!isDeclaredInClass(resolutionResult.getReceiverParameterDescriptor())) {
|
if (!isDeclaredInClass(resolutionResult.getReceiverParameterDescriptor())) {
|
||||||
return LabelResolver.LabeledReceiverResolutionResult.labelResolutionSuccess(NO_RECEIVER_PARAMETER);
|
return LabelResolver.LabeledReceiverResolutionResult.labelResolutionSuccess(NO_RECEIVER_PARAMETER);
|
||||||
|
|||||||
+3
-3
@@ -437,7 +437,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitReturnExpression(@NotNull JetReturnExpression expression, ExpressionTypingContext context) {
|
public JetTypeInfo visitReturnExpression(@NotNull JetReturnExpression expression, ExpressionTypingContext context) {
|
||||||
JetElement labelTargetElement = context.labelResolver.resolveLabel(expression, context);
|
JetElement labelTargetElement = LabelResolver.INSTANCE.resolveLabel(expression, context);
|
||||||
|
|
||||||
JetExpression returnedExpression = expression.getReturnedExpression();
|
JetExpression returnedExpression = expression.getReturnedExpression();
|
||||||
|
|
||||||
@@ -509,13 +509,13 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitBreakExpression(@NotNull JetBreakExpression expression, ExpressionTypingContext context) {
|
public JetTypeInfo visitBreakExpression(@NotNull JetBreakExpression expression, ExpressionTypingContext context) {
|
||||||
context.labelResolver.resolveLabel(expression, context);
|
LabelResolver.INSTANCE.resolveLabel(expression, context);
|
||||||
return DataFlowUtils.checkType(KotlinBuiltIns.getInstance().getNothingType(), expression, context, context.dataFlowInfo);
|
return DataFlowUtils.checkType(KotlinBuiltIns.getInstance().getNothingType(), expression, context, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitContinueExpression(@NotNull JetContinueExpression expression, ExpressionTypingContext context) {
|
public JetTypeInfo visitContinueExpression(@NotNull JetContinueExpression expression, ExpressionTypingContext context) {
|
||||||
context.labelResolver.resolveLabel(expression, context);
|
LabelResolver.INSTANCE.resolveLabel(expression, context);
|
||||||
return DataFlowUtils.checkType(KotlinBuiltIns.getInstance().getNothingType(), expression, context, context.dataFlowInfo);
|
return DataFlowUtils.checkType(KotlinBuiltIns.getInstance().getNothingType(), expression, context, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-10
@@ -40,16 +40,16 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
|||||||
@NotNull JetType expectedType
|
@NotNull JetType expectedType
|
||||||
) {
|
) {
|
||||||
return newContext(trace, scope, dataFlowInfo, expectedType,
|
return newContext(trace, scope, dataFlowInfo, expectedType,
|
||||||
ContextDependency.INDEPENDENT, new ResolutionResultsCacheImpl(), LabelResolver.create(),
|
ContextDependency.INDEPENDENT, new ResolutionResultsCacheImpl(),
|
||||||
expressionTypingServices.createExtension(scope, false), false);
|
expressionTypingServices.createExtension(scope, false), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ExpressionTypingContext newContext(@NotNull ResolutionContext context) {
|
public static ExpressionTypingContext newContext(@NotNull ResolutionContext context) {
|
||||||
return new ExpressionTypingContext(
|
return new ExpressionTypingContext(
|
||||||
context.labelResolver, context.trace, context.scope, context.scope.getContainingDeclaration(),
|
context.trace, context.scope, context.scope.getContainingDeclaration(), context.dataFlowInfo, context.expectedType,
|
||||||
context.dataFlowInfo, context.expectedType, context.contextDependency, context.resolutionResultsCache,
|
context.contextDependency, context.resolutionResultsCache, context.callResolverExtension, context.isAnnotationContext,
|
||||||
context.callResolverExtension, context.isAnnotationContext, context.collectAllCandidates
|
context.collectAllCandidates
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,12 +61,11 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@NotNull CallResolverExtension callResolverExtension,
|
@NotNull CallResolverExtension callResolverExtension,
|
||||||
boolean isAnnotationContext
|
boolean isAnnotationContext
|
||||||
) {
|
) {
|
||||||
return new ExpressionTypingContext(
|
return new ExpressionTypingContext(
|
||||||
labelResolver, trace, scope, scope.getContainingDeclaration(), dataFlowInfo, expectedType, contextDependency,
|
trace, scope, scope.getContainingDeclaration(), dataFlowInfo, expectedType, contextDependency,
|
||||||
resolutionResultsCache, callResolverExtension, isAnnotationContext, false);
|
resolutionResultsCache, callResolverExtension, isAnnotationContext, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +73,6 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
|||||||
private CompileTimeConstantChecker compileTimeConstantChecker;
|
private CompileTimeConstantChecker compileTimeConstantChecker;
|
||||||
|
|
||||||
private ExpressionTypingContext(
|
private ExpressionTypingContext(
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull JetScope scope,
|
@NotNull JetScope scope,
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
@NotNull DeclarationDescriptor containingDeclaration,
|
||||||
@@ -86,7 +84,7 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
|||||||
boolean isAnnotationContext,
|
boolean isAnnotationContext,
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, labelResolver, callResolverExtension,
|
super(trace, scope, expectedType, dataFlowInfo, contextDependency, resolutionResultsCache, callResolverExtension,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
this.containingDeclaration = containingDeclaration;
|
this.containingDeclaration = containingDeclaration;
|
||||||
}
|
}
|
||||||
@@ -99,10 +97,9 @@ public class ExpressionTypingContext extends ResolutionContext<ExpressionTypingC
|
|||||||
@NotNull JetType expectedType,
|
@NotNull JetType expectedType,
|
||||||
@NotNull ContextDependency contextDependency,
|
@NotNull ContextDependency contextDependency,
|
||||||
@NotNull ResolutionResultsCache resolutionResultsCache,
|
@NotNull ResolutionResultsCache resolutionResultsCache,
|
||||||
@NotNull LabelResolver labelResolver,
|
|
||||||
boolean collectAllCandidates
|
boolean collectAllCandidates
|
||||||
) {
|
) {
|
||||||
return new ExpressionTypingContext(this.labelResolver, trace, scope, containingDeclaration, dataFlowInfo,
|
return new ExpressionTypingContext(trace, scope, containingDeclaration, dataFlowInfo,
|
||||||
expectedType, contextDependency, resolutionResultsCache, callResolverExtension,
|
expectedType, contextDependency, resolutionResultsCache, callResolverExtension,
|
||||||
isAnnotationContext, collectAllCandidates);
|
isAnnotationContext, collectAllCandidates);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -347,7 +347,7 @@ public class ExpressionTypingServices {
|
|||||||
private ExpressionTypingContext createContext(ExpressionTypingContext oldContext, BindingTrace trace, WritableScope scope, DataFlowInfo dataFlowInfo, JetType expectedType) {
|
private ExpressionTypingContext createContext(ExpressionTypingContext oldContext, BindingTrace trace, WritableScope scope, DataFlowInfo dataFlowInfo, JetType expectedType) {
|
||||||
return ExpressionTypingContext.newContext(
|
return ExpressionTypingContext.newContext(
|
||||||
trace, scope, dataFlowInfo, expectedType, oldContext.contextDependency, oldContext.resolutionResultsCache,
|
trace, scope, dataFlowInfo, expectedType, oldContext.contextDependency, oldContext.resolutionResultsCache,
|
||||||
oldContext.labelResolver, oldContext.callResolverExtension, oldContext.isAnnotationContext);
|
oldContext.callResolverExtension, oldContext.isAnnotationContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -37,10 +37,7 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET;
|
|||||||
|
|
||||||
public class LabelResolver {
|
public class LabelResolver {
|
||||||
|
|
||||||
@NotNull
|
public static LabelResolver INSTANCE = new LabelResolver();
|
||||||
public static LabelResolver create() {
|
|
||||||
return new LabelResolver();
|
|
||||||
}
|
|
||||||
|
|
||||||
private LabelResolver() {}
|
private LabelResolver() {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user