From eb50e4adb3ccf9f8b35e6065aa5af61244c195e3 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Mon, 27 Oct 2014 19:45:14 +0300 Subject: [PATCH] Inject StorageManager to ResolutionTaskHolder --- .../di/InjectorForLazyResolveWithJava.java | 4 ++++ .../di/InjectorForTopDownAnalyzerForJvm.java | 4 ++++ .../jet/di/InjectorForBodyResolve.java | 4 ++++ .../jet/di/InjectorForLazyResolve.java | 4 ++++ .../jetbrains/jet/di/InjectorForMacros.java | 4 ++++ .../di/InjectorForTopDownAnalyzerBasic.java | 4 ++++ .../jet/lang/resolve/calls/CallResolver.java | 20 ++++++++++++------- .../calls/tasks/ResolutionTaskHolder.kt | 2 ++ .../resolve/calls/tasks/TaskPrioritizer.java | 16 +++++++++++---- .../jetbrains/jet/di/InjectorForTests.java | 4 ++++ .../di/InjectorForTopDownAnalyzerForJs.java | 4 ++++ 11 files changed, 59 insertions(+), 11 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java index e94f2022aab..7781ccb9729 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -57,6 +57,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; @@ -116,6 +117,7 @@ public class InjectorForLazyResolveWithJava { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final JetImportsFactory jetImportsFactory; private final ScopeProvider scopeProvider; private final ScriptBodyResolver scriptBodyResolver; @@ -181,6 +183,7 @@ public class InjectorForLazyResolveWithJava { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.jetImportsFactory = new JetImportsFactory(); this.scopeProvider = new ScopeProvider(getResolveSession()); this.scriptBodyResolver = new ScriptBodyResolver(); @@ -220,6 +223,7 @@ public class InjectorForLazyResolveWithJava { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index a2adb2fdb5a..92478fc1186 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -60,6 +60,7 @@ import org.jetbrains.jet.context.LazinessToken; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; @@ -130,6 +131,7 @@ public class InjectorForTopDownAnalyzerForJvm { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; @@ -206,6 +208,7 @@ public class InjectorForTopDownAnalyzerForJvm { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); @@ -273,6 +276,7 @@ public class InjectorForTopDownAnalyzerForJvm { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index 2521553ec1d..47bcb1bb2bb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -43,6 +43,7 @@ import org.jetbrains.jet.context.LazinessToken; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; @@ -82,6 +83,7 @@ public class InjectorForBodyResolve { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; @@ -122,6 +124,7 @@ public class InjectorForBodyResolve { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); @@ -146,6 +149,7 @@ public class InjectorForBodyResolve { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index 065f8f91d8f..e69783e4717 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -44,6 +44,7 @@ import org.jetbrains.jet.lang.resolve.TypeResolver.FlexibleTypeCapabilitiesProvi import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; @@ -82,6 +83,7 @@ public class InjectorForLazyResolve { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final JetImportsFactory jetImportsFactory; private final ScopeProvider scopeProvider; private final ScriptBodyResolver scriptBodyResolver; @@ -122,6 +124,7 @@ public class InjectorForLazyResolve { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.jetImportsFactory = new JetImportsFactory(); this.scopeProvider = new ScopeProvider(getResolveSession()); this.scriptBodyResolver = new ScriptBodyResolver(); @@ -142,6 +145,7 @@ public class InjectorForLazyResolve { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index eebf476edb9..252eba6448d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -41,6 +41,7 @@ import org.jetbrains.jet.lang.reflect.ReflectionTypes; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -73,6 +74,7 @@ public class InjectorForMacros { private final ArgumentTypeResolver argumentTypeResolver; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; public InjectorForMacros( @NotNull Project project, @@ -103,6 +105,7 @@ public class InjectorForMacros { this.argumentTypeResolver = new ArgumentTypeResolver(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); @@ -126,6 +129,7 @@ public class InjectorForMacros { this.callResolver.setCallCompleter(callCompleter); this.callResolver.setCandidateResolver(candidateResolver); this.callResolver.setExpressionTypingServices(expressionTypingServices); + this.callResolver.setTaskPrioritizer(taskPrioritizer); this.callResolver.setTypeResolver(typeResolver); annotationResolver.setCallResolver(callResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index 6ca694b02aa..f6f0d65b043 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -46,6 +46,7 @@ import org.jetbrains.jet.context.LazinessToken; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; @@ -95,6 +96,7 @@ public class InjectorForTopDownAnalyzerBasic { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; @@ -145,6 +147,7 @@ public class InjectorForTopDownAnalyzerBasic { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); @@ -195,6 +198,7 @@ public class InjectorForTopDownAnalyzerBasic { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index 7aa79cf604e..5619b8fc81f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -72,6 +72,9 @@ public class CallResolver { private ArgumentTypeResolver argumentTypeResolver; @NotNull private CallCompleter callCompleter; + @NotNull + private TaskPrioritizer taskPrioritizer; + @Inject public void setExpressionTypingServices(@NotNull ExpressionTypingServices expressionTypingServices) { this.expressionTypingServices = expressionTypingServices; @@ -97,6 +100,11 @@ public class CallResolver { this.callCompleter = callCompleter; } + @Inject + public void setTaskPrioritizer(@NotNull TaskPrioritizer taskPrioritizer) { + this.taskPrioritizer = taskPrioritizer; + } + @NotNull public OverloadResolutionResults resolveSimpleProperty(@NotNull BasicCallResolutionContext context) { JetExpression calleeExpression = context.call.getCalleeExpression(); @@ -113,8 +121,7 @@ public class CallResolver { } TracingStrategy tracing = TracingStrategyImpl.create(nameExpression, context.call); List> prioritizedTasks = - TaskPrioritizer.computePrioritizedTasks( - context, referencedName, tracing, callableDescriptorCollectors); + taskPrioritizer.computePrioritizedTasks(context, referencedName, tracing, callableDescriptorCollectors); return doResolveCallOrGetCachedResults(context, prioritizedTasks, CallTransformer.PROPERTY_CALL_TRANSFORMER, tracing); } @@ -158,7 +165,7 @@ public class CallResolver { @NotNull CallableDescriptorCollectors collectors ) { List> tasks = - TaskPrioritizer.computePrioritizedTasks(context, name, tracing, collectors); + taskPrioritizer.computePrioritizedTasks(context, name, tracing, collectors); return doResolveCallOrGetCachedResults(context, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); } @@ -209,7 +216,7 @@ public class CallResolver { Name name = expression.getReferencedNameAsName(); TracingStrategy tracing = TracingStrategyImpl.create(expression, context.call); - prioritizedTasks = TaskPrioritizer.computePrioritizedTasks( + prioritizedTasks = taskPrioritizer.computePrioritizedTasks( context, name, tracing, CallableDescriptorCollectors.FUNCTIONS_AND_VARIABLES); ResolutionTask.DescriptorCheckStrategy abstractConstructorCheck = new ResolutionTask.DescriptorCheckStrategy() { @Override @@ -258,7 +265,7 @@ public class CallResolver { Collection> candidates = TaskPrioritizer.convertWithImpliedThisAndNoReceiver( context.scope, constructors, context.call); - prioritizedTasks = TaskPrioritizer.computePrioritizedTasksFromCandidates( + prioritizedTasks = taskPrioritizer.computePrioritizedTasksFromCandidates( context, candidates, TracingStrategyImpl.create(functionReference, context.call)); } else { @@ -321,8 +328,7 @@ public class CallResolver { BasicCallResolutionContext.create(context, call, CheckValueArgumentsMode.ENABLED, dataFlowInfoForArguments); List> tasks = - TaskPrioritizer.computePrioritizedTasksFromCandidates( - basicCallResolutionContext, Collections.singleton(candidate), tracing); + taskPrioritizer.computePrioritizedTasksFromCandidates(basicCallResolutionContext, Collections.singleton(candidate), tracing); return doResolveCallOrGetCachedResults( basicCallResolutionContext, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionTaskHolder.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionTaskHolder.kt index 5d8d5f77e06..9ed5bfd736c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionTaskHolder.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/ResolutionTaskHolder.kt @@ -23,8 +23,10 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor import org.jetbrains.jet.lang.psi.JetPsiUtil import org.jetbrains.jet.lang.psi.JetReferenceExpression import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext +import org.jetbrains.jet.storage.StorageManager public class ResolutionTaskHolder( + private val storageManager: StorageManager, private val basicCallResolutionContext: BasicCallResolutionContext, private val priorityProvider: ResolutionTaskHolder.PriorityProvider>, private val tracing: TracingStrategy diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java index 985121a4c58..72b78ec6dee 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java @@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; +import org.jetbrains.jet.storage.StorageManager; import java.util.Collection; import java.util.List; @@ -49,6 +50,13 @@ import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_R public class TaskPrioritizer { + @NotNull + private final StorageManager storageManager; + + public TaskPrioritizer(@NotNull StorageManager manager) { + storageManager = manager; + } + public static void splitLexicallyLocalDescriptors( @NotNull Collection> allDescriptors, @NotNull DeclarationDescriptor containerOfTheCurrentLocality, @@ -78,7 +86,7 @@ public class TaskPrioritizer { } @NotNull - public static List> computePrioritizedTasks( + public List> computePrioritizedTasks( @NotNull BasicCallResolutionContext context, @NotNull Name name, @NotNull TracingStrategy tracing, @@ -86,7 +94,7 @@ public class TaskPrioritizer { ) { ReceiverValue explicitReceiver = context.call.getExplicitReceiver(); ResolutionTaskHolder result = - new ResolutionTaskHolder(context, new MyPriorityProvider(context), tracing); + new ResolutionTaskHolder(storageManager, context, new MyPriorityProvider(context), tracing); TaskPrioritizerContext taskPrioritizerContext = new TaskPrioritizerContext(name, result, context, context.scope, callableDescriptorCollectors); @@ -344,13 +352,13 @@ public class TaskPrioritizer { return false; } - public static List> computePrioritizedTasksFromCandidates( + public List> computePrioritizedTasksFromCandidates( @NotNull BasicCallResolutionContext context, @NotNull Collection> candidates, @NotNull TracingStrategy tracing ) { ResolutionTaskHolder result = new ResolutionTaskHolder( - context, new MyPriorityProvider(context), tracing); + storageManager, context, new MyPriorityProvider(context), tracing); result.addCandidates(candidates); return result.getTasks(); } diff --git a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java index 6e2cbfac082..5f2b1107778 100644 --- a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java @@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents; import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils; @@ -63,6 +64,7 @@ public class InjectorForTests { private final ArgumentTypeResolver argumentTypeResolver; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final DelegatedPropertyResolver delegatedPropertyResolver; private final ExpressionTypingComponents expressionTypingComponents; private final ControlStructureTypingUtils controlStructureTypingUtils; @@ -97,6 +99,7 @@ public class InjectorForTests { this.argumentTypeResolver = new ArgumentTypeResolver(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.controlStructureTypingUtils = new ControlStructureTypingUtils(getExpressionTypingServices()); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); @@ -126,6 +129,7 @@ public class InjectorForTests { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index b95646e5479..02ec49b21b9 100644 --- a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -46,6 +46,7 @@ import org.jetbrains.jet.context.LazinessToken; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; @@ -95,6 +96,7 @@ public class InjectorForTopDownAnalyzerForJs { private final CallResolverExtensionProvider callResolverExtensionProvider; private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; + private final TaskPrioritizer taskPrioritizer; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; @@ -144,6 +146,7 @@ public class InjectorForTopDownAnalyzerForJs { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); + this.taskPrioritizer = new TaskPrioritizer(storageManager); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); @@ -194,6 +197,7 @@ public class InjectorForTopDownAnalyzerForJs { callResolver.setCallCompleter(callCompleter); callResolver.setCandidateResolver(candidateResolver); callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTaskPrioritizer(taskPrioritizer); callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);