Inject StorageManager to ResolutionTaskHolder
This commit is contained in:
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.psi.JetImportsFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||||
@@ -116,6 +117,7 @@ public class InjectorForLazyResolveWithJava {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final JetImportsFactory jetImportsFactory;
|
private final JetImportsFactory jetImportsFactory;
|
||||||
private final ScopeProvider scopeProvider;
|
private final ScopeProvider scopeProvider;
|
||||||
private final ScriptBodyResolver scriptBodyResolver;
|
private final ScriptBodyResolver scriptBodyResolver;
|
||||||
@@ -181,6 +183,7 @@ public class InjectorForLazyResolveWithJava {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.jetImportsFactory = new JetImportsFactory();
|
this.jetImportsFactory = new JetImportsFactory();
|
||||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||||
@@ -220,6 +223,7 @@ public class InjectorForLazyResolveWithJava {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
||||||
@@ -130,6 +131,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final ModifiersChecker modifiersChecker;
|
private final ModifiersChecker modifiersChecker;
|
||||||
@@ -206,6 +208,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
||||||
@@ -273,6 +276,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
||||||
@@ -82,6 +83,7 @@ public class InjectorForBodyResolve {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final ModifiersChecker modifiersChecker;
|
private final ModifiersChecker modifiersChecker;
|
||||||
@@ -122,6 +124,7 @@ public class InjectorForBodyResolve {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
||||||
@@ -146,6 +149,7 @@ public class InjectorForBodyResolve {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.psi.JetImportsFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||||
@@ -82,6 +83,7 @@ public class InjectorForLazyResolve {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final JetImportsFactory jetImportsFactory;
|
private final JetImportsFactory jetImportsFactory;
|
||||||
private final ScopeProvider scopeProvider;
|
private final ScopeProvider scopeProvider;
|
||||||
private final ScriptBodyResolver scriptBodyResolver;
|
private final ScriptBodyResolver scriptBodyResolver;
|
||||||
@@ -122,6 +124,7 @@ public class InjectorForLazyResolve {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.jetImportsFactory = new JetImportsFactory();
|
this.jetImportsFactory = new JetImportsFactory();
|
||||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||||
@@ -142,6 +145,7 @@ public class InjectorForLazyResolve {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -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.ArgumentTypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
|
|
||||||
@@ -73,6 +74,7 @@ public class InjectorForMacros {
|
|||||||
private final ArgumentTypeResolver argumentTypeResolver;
|
private final ArgumentTypeResolver argumentTypeResolver;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
|
|
||||||
public InjectorForMacros(
|
public InjectorForMacros(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@@ -103,6 +105,7 @@ public class InjectorForMacros {
|
|||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
|
|
||||||
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
||||||
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
|
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
|
||||||
@@ -126,6 +129,7 @@ public class InjectorForMacros {
|
|||||||
this.callResolver.setCallCompleter(callCompleter);
|
this.callResolver.setCallCompleter(callCompleter);
|
||||||
this.callResolver.setCandidateResolver(candidateResolver);
|
this.callResolver.setCandidateResolver(candidateResolver);
|
||||||
this.callResolver.setExpressionTypingServices(expressionTypingServices);
|
this.callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
this.callResolver.setTypeResolver(typeResolver);
|
this.callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
annotationResolver.setCallResolver(callResolver);
|
annotationResolver.setCallResolver(callResolver);
|
||||||
|
|||||||
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
||||||
@@ -95,6 +96,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final ModifiersChecker modifiersChecker;
|
private final ModifiersChecker modifiersChecker;
|
||||||
@@ -145,6 +147,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
||||||
@@ -195,6 +198,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -72,6 +72,9 @@ public class CallResolver {
|
|||||||
private ArgumentTypeResolver argumentTypeResolver;
|
private ArgumentTypeResolver argumentTypeResolver;
|
||||||
@NotNull
|
@NotNull
|
||||||
private CallCompleter callCompleter;
|
private CallCompleter callCompleter;
|
||||||
|
@NotNull
|
||||||
|
private TaskPrioritizer taskPrioritizer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setExpressionTypingServices(@NotNull ExpressionTypingServices expressionTypingServices) {
|
public void setExpressionTypingServices(@NotNull ExpressionTypingServices expressionTypingServices) {
|
||||||
this.expressionTypingServices = expressionTypingServices;
|
this.expressionTypingServices = expressionTypingServices;
|
||||||
@@ -97,6 +100,11 @@ public class CallResolver {
|
|||||||
this.callCompleter = callCompleter;
|
this.callCompleter = callCompleter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setTaskPrioritizer(@NotNull TaskPrioritizer taskPrioritizer) {
|
||||||
|
this.taskPrioritizer = taskPrioritizer;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public OverloadResolutionResults<VariableDescriptor> resolveSimpleProperty(@NotNull BasicCallResolutionContext context) {
|
public OverloadResolutionResults<VariableDescriptor> resolveSimpleProperty(@NotNull BasicCallResolutionContext context) {
|
||||||
JetExpression calleeExpression = context.call.getCalleeExpression();
|
JetExpression calleeExpression = context.call.getCalleeExpression();
|
||||||
@@ -113,8 +121,7 @@ public class CallResolver {
|
|||||||
}
|
}
|
||||||
TracingStrategy tracing = TracingStrategyImpl.create(nameExpression, context.call);
|
TracingStrategy tracing = TracingStrategyImpl.create(nameExpression, context.call);
|
||||||
List<ResolutionTask<VariableDescriptor, VariableDescriptor>> prioritizedTasks =
|
List<ResolutionTask<VariableDescriptor, VariableDescriptor>> prioritizedTasks =
|
||||||
TaskPrioritizer.<VariableDescriptor, VariableDescriptor>computePrioritizedTasks(
|
taskPrioritizer.<VariableDescriptor, VariableDescriptor>computePrioritizedTasks(context, referencedName, tracing, callableDescriptorCollectors);
|
||||||
context, referencedName, tracing, callableDescriptorCollectors);
|
|
||||||
return doResolveCallOrGetCachedResults(context, prioritizedTasks, CallTransformer.PROPERTY_CALL_TRANSFORMER, tracing);
|
return doResolveCallOrGetCachedResults(context, prioritizedTasks, CallTransformer.PROPERTY_CALL_TRANSFORMER, tracing);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +165,7 @@ public class CallResolver {
|
|||||||
@NotNull CallableDescriptorCollectors<CallableDescriptor> collectors
|
@NotNull CallableDescriptorCollectors<CallableDescriptor> collectors
|
||||||
) {
|
) {
|
||||||
List<ResolutionTask<CallableDescriptor, FunctionDescriptor>> tasks =
|
List<ResolutionTask<CallableDescriptor, FunctionDescriptor>> tasks =
|
||||||
TaskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasks(context, name, tracing, collectors);
|
taskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasks(context, name, tracing, collectors);
|
||||||
return doResolveCallOrGetCachedResults(context, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing);
|
return doResolveCallOrGetCachedResults(context, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,7 +216,7 @@ public class CallResolver {
|
|||||||
Name name = expression.getReferencedNameAsName();
|
Name name = expression.getReferencedNameAsName();
|
||||||
|
|
||||||
TracingStrategy tracing = TracingStrategyImpl.create(expression, context.call);
|
TracingStrategy tracing = TracingStrategyImpl.create(expression, context.call);
|
||||||
prioritizedTasks = TaskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasks(
|
prioritizedTasks = taskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasks(
|
||||||
context, name, tracing, CallableDescriptorCollectors.FUNCTIONS_AND_VARIABLES);
|
context, name, tracing, CallableDescriptorCollectors.FUNCTIONS_AND_VARIABLES);
|
||||||
ResolutionTask.DescriptorCheckStrategy abstractConstructorCheck = new ResolutionTask.DescriptorCheckStrategy() {
|
ResolutionTask.DescriptorCheckStrategy abstractConstructorCheck = new ResolutionTask.DescriptorCheckStrategy() {
|
||||||
@Override
|
@Override
|
||||||
@@ -258,7 +265,7 @@ public class CallResolver {
|
|||||||
Collection<ResolutionCandidate<CallableDescriptor>> candidates =
|
Collection<ResolutionCandidate<CallableDescriptor>> candidates =
|
||||||
TaskPrioritizer.<CallableDescriptor>convertWithImpliedThisAndNoReceiver(
|
TaskPrioritizer.<CallableDescriptor>convertWithImpliedThisAndNoReceiver(
|
||||||
context.scope, constructors, context.call);
|
context.scope, constructors, context.call);
|
||||||
prioritizedTasks = TaskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasksFromCandidates(
|
prioritizedTasks = taskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasksFromCandidates(
|
||||||
context, candidates, TracingStrategyImpl.create(functionReference, context.call));
|
context, candidates, TracingStrategyImpl.create(functionReference, context.call));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -321,8 +328,7 @@ public class CallResolver {
|
|||||||
BasicCallResolutionContext.create(context, call, CheckValueArgumentsMode.ENABLED, dataFlowInfoForArguments);
|
BasicCallResolutionContext.create(context, call, CheckValueArgumentsMode.ENABLED, dataFlowInfoForArguments);
|
||||||
|
|
||||||
List<ResolutionTask<CallableDescriptor, FunctionDescriptor>> tasks =
|
List<ResolutionTask<CallableDescriptor, FunctionDescriptor>> tasks =
|
||||||
TaskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasksFromCandidates(
|
taskPrioritizer.<CallableDescriptor, FunctionDescriptor>computePrioritizedTasksFromCandidates(basicCallResolutionContext, Collections.singleton(candidate), tracing);
|
||||||
basicCallResolutionContext, Collections.singleton(candidate), tracing);
|
|
||||||
return doResolveCallOrGetCachedResults(
|
return doResolveCallOrGetCachedResults(
|
||||||
basicCallResolutionContext, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing);
|
basicCallResolutionContext, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -23,8 +23,10 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor
|
|||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil
|
import org.jetbrains.jet.lang.psi.JetPsiUtil
|
||||||
import org.jetbrains.jet.lang.psi.JetReferenceExpression
|
import org.jetbrains.jet.lang.psi.JetReferenceExpression
|
||||||
import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext
|
import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext
|
||||||
|
import org.jetbrains.jet.storage.StorageManager
|
||||||
|
|
||||||
public class ResolutionTaskHolder<D : CallableDescriptor, F : D>(
|
public class ResolutionTaskHolder<D : CallableDescriptor, F : D>(
|
||||||
|
private val storageManager: StorageManager,
|
||||||
private val basicCallResolutionContext: BasicCallResolutionContext,
|
private val basicCallResolutionContext: BasicCallResolutionContext,
|
||||||
private val priorityProvider: ResolutionTaskHolder.PriorityProvider<ResolutionCandidate<D>>,
|
private val priorityProvider: ResolutionTaskHolder.PriorityProvider<ResolutionCandidate<D>>,
|
||||||
private val tracing: TracingStrategy
|
private val tracing: TracingStrategy
|
||||||
|
|||||||
+12
-4
@@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.types.ErrorUtils;
|
|||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -49,6 +50,13 @@ import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_R
|
|||||||
|
|
||||||
public class TaskPrioritizer {
|
public class TaskPrioritizer {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private final StorageManager storageManager;
|
||||||
|
|
||||||
|
public TaskPrioritizer(@NotNull StorageManager manager) {
|
||||||
|
storageManager = manager;
|
||||||
|
}
|
||||||
|
|
||||||
public static <D extends CallableDescriptor> void splitLexicallyLocalDescriptors(
|
public static <D extends CallableDescriptor> void splitLexicallyLocalDescriptors(
|
||||||
@NotNull Collection<ResolutionCandidate<D>> allDescriptors,
|
@NotNull Collection<ResolutionCandidate<D>> allDescriptors,
|
||||||
@NotNull DeclarationDescriptor containerOfTheCurrentLocality,
|
@NotNull DeclarationDescriptor containerOfTheCurrentLocality,
|
||||||
@@ -78,7 +86,7 @@ public class TaskPrioritizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static <D extends CallableDescriptor, F extends D> List<ResolutionTask<D, F>> computePrioritizedTasks(
|
public <D extends CallableDescriptor, F extends D> List<ResolutionTask<D, F>> computePrioritizedTasks(
|
||||||
@NotNull BasicCallResolutionContext context,
|
@NotNull BasicCallResolutionContext context,
|
||||||
@NotNull Name name,
|
@NotNull Name name,
|
||||||
@NotNull TracingStrategy tracing,
|
@NotNull TracingStrategy tracing,
|
||||||
@@ -86,7 +94,7 @@ public class TaskPrioritizer {
|
|||||||
) {
|
) {
|
||||||
ReceiverValue explicitReceiver = context.call.getExplicitReceiver();
|
ReceiverValue explicitReceiver = context.call.getExplicitReceiver();
|
||||||
ResolutionTaskHolder<D, F> result =
|
ResolutionTaskHolder<D, F> result =
|
||||||
new ResolutionTaskHolder<D, F>(context, new MyPriorityProvider<D>(context), tracing);
|
new ResolutionTaskHolder<D, F>(storageManager, context, new MyPriorityProvider<D>(context), tracing);
|
||||||
TaskPrioritizerContext<D, F> taskPrioritizerContext =
|
TaskPrioritizerContext<D, F> taskPrioritizerContext =
|
||||||
new TaskPrioritizerContext<D, F>(name, result, context, context.scope, callableDescriptorCollectors);
|
new TaskPrioritizerContext<D, F>(name, result, context, context.scope, callableDescriptorCollectors);
|
||||||
|
|
||||||
@@ -344,13 +352,13 @@ public class TaskPrioritizer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <D extends CallableDescriptor, F extends D> List<ResolutionTask<D, F>> computePrioritizedTasksFromCandidates(
|
public <D extends CallableDescriptor, F extends D> List<ResolutionTask<D, F>> computePrioritizedTasksFromCandidates(
|
||||||
@NotNull BasicCallResolutionContext context,
|
@NotNull BasicCallResolutionContext context,
|
||||||
@NotNull Collection<ResolutionCandidate<D>> candidates,
|
@NotNull Collection<ResolutionCandidate<D>> candidates,
|
||||||
@NotNull TracingStrategy tracing
|
@NotNull TracingStrategy tracing
|
||||||
) {
|
) {
|
||||||
ResolutionTaskHolder<D, F> result = new ResolutionTaskHolder<D, F>(
|
ResolutionTaskHolder<D, F> result = new ResolutionTaskHolder<D, F>(
|
||||||
context, new MyPriorityProvider<D>(context), tracing);
|
storageManager, context, new MyPriorityProvider<D>(context), tracing);
|
||||||
result.addCandidates(candidates);
|
result.addCandidates(candidates);
|
||||||
return result.getTasks();
|
return result.getTasks();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.ArgumentTypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.resolve.DelegatedPropertyResolver;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils;
|
import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils;
|
||||||
@@ -63,6 +64,7 @@ public class InjectorForTests {
|
|||||||
private final ArgumentTypeResolver argumentTypeResolver;
|
private final ArgumentTypeResolver argumentTypeResolver;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final DelegatedPropertyResolver delegatedPropertyResolver;
|
private final DelegatedPropertyResolver delegatedPropertyResolver;
|
||||||
private final ExpressionTypingComponents expressionTypingComponents;
|
private final ExpressionTypingComponents expressionTypingComponents;
|
||||||
private final ControlStructureTypingUtils controlStructureTypingUtils;
|
private final ControlStructureTypingUtils controlStructureTypingUtils;
|
||||||
@@ -97,6 +99,7 @@ public class InjectorForTests {
|
|||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
||||||
this.controlStructureTypingUtils = new ControlStructureTypingUtils(getExpressionTypingServices());
|
this.controlStructureTypingUtils = new ControlStructureTypingUtils(getExpressionTypingServices());
|
||||||
this.forLoopConventionsChecker = new ForLoopConventionsChecker();
|
this.forLoopConventionsChecker = new ForLoopConventionsChecker();
|
||||||
@@ -126,6 +129,7 @@ public class InjectorForTests {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -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.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
import org.jetbrains.jet.lang.resolve.calls.CallCompleter;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
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.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
|
||||||
@@ -95,6 +96,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final CallCompleter callCompleter;
|
private final CallCompleter callCompleter;
|
||||||
private final CandidateResolver candidateResolver;
|
private final CandidateResolver candidateResolver;
|
||||||
|
private final TaskPrioritizer taskPrioritizer;
|
||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final ModifiersChecker modifiersChecker;
|
private final ModifiersChecker modifiersChecker;
|
||||||
@@ -144,6 +146,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.candidateResolver = new CandidateResolver();
|
this.candidateResolver = new CandidateResolver();
|
||||||
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
|
||||||
|
this.taskPrioritizer = new TaskPrioritizer(storageManager);
|
||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
|
||||||
@@ -194,6 +197,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
callResolver.setCallCompleter(callCompleter);
|
callResolver.setCallCompleter(callCompleter);
|
||||||
callResolver.setCandidateResolver(candidateResolver);
|
callResolver.setCandidateResolver(candidateResolver);
|
||||||
callResolver.setExpressionTypingServices(expressionTypingServices);
|
callResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
callResolver.setTaskPrioritizer(taskPrioritizer);
|
||||||
callResolver.setTypeResolver(typeResolver);
|
callResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
Reference in New Issue
Block a user