script parameters
still a lot of things to do
This commit is contained in:
+23
-9
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
|
||||
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderForJvm;
|
||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
@@ -44,8 +45,8 @@ import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||
@@ -71,6 +72,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
private final CompilerDependencies compilerDependencies;
|
||||
private CompilerSpecialMode compilerSpecialMode;
|
||||
private JavaBridgeConfiguration javaBridgeConfiguration;
|
||||
private JavaDescriptorResolver javaDescriptorResolver;
|
||||
private PsiClassFinderForJvm psiClassFinderForJvm;
|
||||
private DeclarationResolver declarationResolver;
|
||||
private AnnotationResolver annotationResolver;
|
||||
@@ -85,8 +87,8 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
private OverloadResolver overloadResolver;
|
||||
private OverrideResolver overrideResolver;
|
||||
private TypeHierarchyResolver typeHierarchyResolver;
|
||||
private ScriptResolver scriptResolver;
|
||||
private JavaSemanticServices javaSemanticServices;
|
||||
private JavaDescriptorResolver javaDescriptorResolver;
|
||||
private JavaTypeTransformer javaTypeTransformer;
|
||||
|
||||
public InjectorForTopDownAnalyzerForJvm(
|
||||
@@ -109,6 +111,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.compilerDependencies = compilerDependencies;
|
||||
this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode();
|
||||
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||
this.psiClassFinderForJvm = new PsiClassFinderForJvm();
|
||||
this.declarationResolver = new DeclarationResolver();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
@@ -123,8 +126,8 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
this.scriptResolver = new ScriptResolver();
|
||||
this.javaSemanticServices = new JavaSemanticServices();
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||
|
||||
this.topDownAnalyzer.setBodyResolver(bodyResolver);
|
||||
@@ -133,6 +136,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
|
||||
this.topDownAnalyzer.setDeclarationsChecker(declarationsChecker);
|
||||
this.topDownAnalyzer.setDelegationResolver(delegationResolver);
|
||||
this.topDownAnalyzer.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
|
||||
this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor);
|
||||
this.topDownAnalyzer.setNamespaceFactory(namespaceFactoryImpl);
|
||||
this.topDownAnalyzer.setOverloadResolver(overloadResolver);
|
||||
@@ -146,6 +150,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.bodyResolver.setCallResolver(callResolver);
|
||||
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
||||
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
this.bodyResolver.setScriptResolver(scriptResolver);
|
||||
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||
this.bodyResolver.setTrace(observableBindingTrace);
|
||||
|
||||
@@ -162,6 +167,12 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.javaBridgeConfiguration.setMode(compilerSpecialMode);
|
||||
this.javaBridgeConfiguration.setProject(project);
|
||||
|
||||
javaDescriptorResolver.setNamespaceFactory(namespaceFactoryImpl);
|
||||
javaDescriptorResolver.setProject(project);
|
||||
javaDescriptorResolver.setPsiClassFinder(psiClassFinderForJvm);
|
||||
javaDescriptorResolver.setSemanticServices(javaSemanticServices);
|
||||
javaDescriptorResolver.setTrace(observableBindingTrace);
|
||||
|
||||
psiClassFinderForJvm.setCompilerDependencies(compilerDependencies);
|
||||
psiClassFinderForJvm.setProject(project);
|
||||
|
||||
@@ -211,19 +222,22 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
typeHierarchyResolver.setDescriptorResolver(descriptorResolver);
|
||||
typeHierarchyResolver.setImportsResolver(importsResolver);
|
||||
typeHierarchyResolver.setNamespaceFactory(namespaceFactoryImpl);
|
||||
typeHierarchyResolver.setScriptResolver(scriptResolver);
|
||||
typeHierarchyResolver.setTrace(observableBindingTrace);
|
||||
|
||||
scriptResolver.setContext(topDownAnalysisContext);
|
||||
scriptResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
|
||||
scriptResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
scriptResolver.setModuleDescriptor(moduleDescriptor);
|
||||
scriptResolver.setNamespaceFactory(namespaceFactoryImpl);
|
||||
scriptResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||
scriptResolver.setTrace(observableBindingTrace);
|
||||
|
||||
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
|
||||
javaSemanticServices.setPsiClassFinder(psiClassFinderForJvm);
|
||||
javaSemanticServices.setTrace(observableBindingTrace);
|
||||
javaSemanticServices.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaDescriptorResolver.setNamespaceFactory(namespaceFactoryImpl);
|
||||
javaDescriptorResolver.setProject(project);
|
||||
javaDescriptorResolver.setPsiClassFinder(psiClassFinderForJvm);
|
||||
javaDescriptorResolver.setSemanticServices(javaSemanticServices);
|
||||
javaDescriptorResolver.setTrace(observableBindingTrace);
|
||||
|
||||
javaTypeTransformer.setJavaSemanticServices(javaSemanticServices);
|
||||
javaTypeTransformer.setResolver(javaDescriptorResolver);
|
||||
|
||||
|
||||
+25
-14
@@ -27,11 +27,17 @@ import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.*;
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||
import org.jetbrains.jet.lang.resolve.ObservableBindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.java.CompilerDependencies.compilerDependenciesForProduction;
|
||||
|
||||
@@ -49,28 +55,31 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
@NotNull
|
||||
public AnalyzeExhaust analyzeFiles(@NotNull Project project,
|
||||
@NotNull Collection<JetFile> files,
|
||||
@NotNull List<AnalyzerScriptParameter> scriptParameters,
|
||||
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely) {
|
||||
return analyzeFilesWithJavaIntegration(project, files, filesToAnalyzeCompletely,
|
||||
return analyzeFilesWithJavaIntegration(project, files, scriptParameters, filesToAnalyzeCompletely,
|
||||
compilerDependenciesForProduction(CompilerSpecialMode.REGULAR), true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalyzeExhaust analyzeBodiesInFiles(@NotNull Project project,
|
||||
@NotNull List<AnalyzerScriptParameter> scriptParameters,
|
||||
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
||||
@NotNull BindingTrace headersTraceContext,
|
||||
@NotNull BodiesResolveContext bodiesResolveContext
|
||||
) {
|
||||
return analyzeBodiesInFilesWithJavaIntegration(
|
||||
project, filesForBodiesResolve, compilerDependenciesForProduction(CompilerSpecialMode.REGULAR),
|
||||
project, scriptParameters, filesForBodiesResolve,
|
||||
compilerDependenciesForProduction(CompilerSpecialMode.REGULAR),
|
||||
headersTraceContext, bodiesResolveContext);
|
||||
}
|
||||
|
||||
public static AnalyzeExhaust analyzeOneFileWithJavaIntegrationAndCheckForErrors(
|
||||
JetFile file, @NotNull CompilerDependencies compilerDependencies) {
|
||||
JetFile file, List<AnalyzerScriptParameter> scriptParameters, @NotNull CompilerDependencies compilerDependencies) {
|
||||
AnalyzingUtils.checkForSyntacticErrors(file);
|
||||
|
||||
AnalyzeExhaust analyzeExhaust = analyzeOneFileWithJavaIntegration(file, compilerDependencies);
|
||||
AnalyzeExhaust analyzeExhaust = analyzeOneFileWithJavaIntegration(file, scriptParameters, compilerDependencies);
|
||||
|
||||
AnalyzingUtils.throwExceptionOnErrors(analyzeExhaust.getBindingContext());
|
||||
|
||||
@@ -78,20 +87,20 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
}
|
||||
|
||||
public static AnalyzeExhaust analyzeOneFileWithJavaIntegration(
|
||||
JetFile file, @NotNull CompilerDependencies compilerDependencies) {
|
||||
return analyzeFilesWithJavaIntegration(file.getProject(), Collections.singleton(file),
|
||||
JetFile file, List<AnalyzerScriptParameter> scriptParameters, @NotNull CompilerDependencies compilerDependencies) {
|
||||
return analyzeFilesWithJavaIntegration(file.getProject(), Collections.singleton(file), scriptParameters,
|
||||
Predicates.<PsiFile>alwaysTrue(), compilerDependencies);
|
||||
}
|
||||
|
||||
public static AnalyzeExhaust analyzeFilesWithJavaIntegration(
|
||||
Project project, Collection<JetFile> files, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
Project project, Collection<JetFile> files, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
@NotNull CompilerDependencies compilerDependencies) {
|
||||
return analyzeFilesWithJavaIntegration(
|
||||
project, files, filesToAnalyzeCompletely, compilerDependencies, false);
|
||||
project, files, scriptParameters, filesToAnalyzeCompletely, compilerDependencies, false);
|
||||
}
|
||||
|
||||
public static AnalyzeExhaust analyzeFilesWithJavaIntegration(
|
||||
Project project, Collection<JetFile> files, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
Project project, Collection<JetFile> files, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
@NotNull CompilerDependencies compilerDependencies,
|
||||
boolean storeContextForBodiesResolve) {
|
||||
BindingTraceContext bindingTraceContext = new BindingTraceContext();
|
||||
@@ -99,13 +108,13 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
final ModuleDescriptor owner = new ModuleDescriptor(Name.special("<module>"));
|
||||
|
||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||
filesToAnalyzeCompletely, false, false);
|
||||
filesToAnalyzeCompletely, false, false, scriptParameters);
|
||||
|
||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
||||
project, topDownAnalysisParameters,
|
||||
new ObservableBindingTrace(bindingTraceContext), owner, compilerDependencies);
|
||||
try {
|
||||
injector.getTopDownAnalyzer().analyzeFiles(files);
|
||||
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
|
||||
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
||||
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
||||
null;
|
||||
@@ -116,14 +125,14 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
}
|
||||
|
||||
public static AnalyzeExhaust analyzeBodiesInFilesWithJavaIntegration(
|
||||
Project project, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
Project project, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||
@NotNull CompilerDependencies compilerDependencies,
|
||||
@NotNull BindingTrace traceContext,
|
||||
@NotNull BodiesResolveContext bodiesResolveContext) {
|
||||
final ModuleDescriptor owner = new ModuleDescriptor(Name.special("<module>"));
|
||||
|
||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||
filesToAnalyzeCompletely, false, false);
|
||||
filesToAnalyzeCompletely, false, false, scriptParameters);
|
||||
|
||||
bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||
|
||||
@@ -145,6 +154,8 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
|
||||
Project project = files.iterator().next().getProject();
|
||||
|
||||
return analyzeFilesWithJavaIntegration(project, files, Predicates.<PsiFile>alwaysFalse(), compilerDependencies);
|
||||
return analyzeFilesWithJavaIntegration(project,
|
||||
files, Collections.<AnalyzerScriptParameter>emptyList(), Predicates.<PsiFile>alwaysFalse(),
|
||||
compilerDependencies);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user