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