From 2952ff558a59f1496932c19206bfe130a36523d4 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 13 May 2014 15:06:17 +0400 Subject: [PATCH] Made LabelResolver a singleton --- .../context/BasicCallResolutionContext.java | 13 +++++-------- .../CallCandidateResolutionContext.java | 11 ++++------- .../calls/context/CallResolutionContext.java | 4 +--- .../calls/context/ResolutionContext.java | 19 +++++++------------ .../context/SimpleResolutionContext.java | 9 +++------ .../resolve/calls/tasks/ResolutionTask.java | 11 ++++------- .../BasicExpressionTypingVisitor.java | 5 +++-- .../ControlStructureTypingVisitor.java | 6 +++--- .../expressions/ExpressionTypingContext.java | 17 +++++++---------- .../expressions/ExpressionTypingServices.java | 2 +- .../lang/types/expressions/LabelResolver.java | 7 ++----- 11 files changed, 40 insertions(+), 64 deletions(-) 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 8c2852f809f..a68985326ce 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 @@ -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 { private BasicCallResolutionContext( @@ -37,13 +36,12 @@ public class BasicCallResolutionContext extends CallResolutionContext extends CallResolutionContext> { public final MutableResolvedCall candidateCall; @@ -47,14 +46,13 @@ public final class CallCandidateResolutionContext @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 return new CallCandidateResolutionContext( 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 return new CallCandidateResolutionContext( 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 @NotNull JetType expectedType, @NotNull ContextDependency contextDependency, @NotNull ResolutionResultsCache resolutionResultsCache, - @NotNull LabelResolver labelResolver, boolean collectAllCandidates ) { return new CallCandidateResolutionContext( candidateCall, tracing, trace, scope, call, expectedType, dataFlowInfo, contextDependency, checkArguments, - resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, explicitExtensionReceiverForInvoke, + resolutionResultsCache, dataFlowInfoForArguments, callResolverExtension, explicitExtensionReceiverForInvoke, isAnnotationContext, collectAllCandidates); } } 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 703c9135163..76edb9305fb 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 @@ -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> extends ResolutionContext { public final Call call; @@ -43,14 +42,13 @@ public abstract class CallResolutionContext> { public final BindingTrace trace; @@ -33,7 +32,6 @@ public abstract class ResolutionContext { private SimpleResolutionContext( @@ -32,12 +31,11 @@ public class SimpleResolutionContext extends ResolutionContext extends C @NotNull ContextDependency contextDependency, @NotNull CheckValueArgumentsMode checkArguments, @NotNull ResolutionResultsCache resolutionResultsCache, - @NotNull LabelResolver labelResolver, @Nullable MutableDataFlowInfoForArguments dataFlowInfoForArguments, @NotNull CallResolverExtension callResolverExtension, @NotNull Collection> resolvedCalls, @@ -62,7 +60,7 @@ public class ResolutionTask 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 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.>newArrayList(), context.isAnnotationContext, context.collectAllCandidates); } @@ -121,12 +119,11 @@ public class ResolutionTask extends C @NotNull JetType expectedType, @NotNull ContextDependency contextDependency, @NotNull ResolutionResultsCache resolutionResultsCache, - @NotNull LabelResolver labelResolver, boolean collectAllCandidates ) { ResolutionTask newTask = new ResolutionTask( 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 extends C public ResolutionTask replaceCall(@NotNull Call newCall) { return new ResolutionTask( candidates, tracing, trace, scope, newCall, expectedType, dataFlowInfo, contextDependency, checkArguments, - resolutionResultsCache, labelResolver, dataFlowInfoForArguments, callResolverExtension, resolvedCalls, + resolutionResultsCache, dataFlowInfoForArguments, callResolverExtension, resolvedCalls, isAnnotationContext, collectAllCandidates); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 65077332825..84815829960 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java index a74c4e4b24a..4102fda4334 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java @@ -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); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java index bbb71cf855d..af7b0f45ab8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java @@ -40,16 +40,16 @@ public class ExpressionTypingContext extends ResolutionContext