Migrated CliLightClassGenerationSupport to package views.

This commit is contained in:
Evgeny Gerashchenko
2013-10-30 21:39:06 +04:00
parent 7e4e3e849d
commit 9d2b79c631
9 changed files with 113 additions and 47 deletions
@@ -45,11 +45,11 @@ public abstract class AbstractDiagnosticsTestWithEagerResolve extends AbstractJe
protected void analyzeAndCheck(File testDataFile, List<TestFile> testFiles) {
List<JetFile> jetFiles = getJetFiles(testFiles);
BindingTrace trace = CliLightClassGenerationSupport.getInstanceForCli(getProject()).getTrace();
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(getProject());
BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
getProject(), jetFiles, trace,
Collections.<AnalyzerScriptParameter>emptyList(), Predicates.<PsiFile>alwaysTrue(), false).getBindingContext();
getProject(), jetFiles, support.getTrace(),
Collections.<AnalyzerScriptParameter>emptyList(), Predicates.<PsiFile>alwaysTrue(), false, support.getModule()).getBindingContext();
boolean ok = true;
@@ -142,20 +142,19 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
JetCoreEnvironment environment = JetCoreEnvironment.createForTests(getTestRootDisposable(), configuration);
// we need the same binding trace for resolve from Java and Kotlin
BindingTrace trace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
ModuleDescriptorImpl moduleDescriptor = AnalyzerFacadeForJVM.createJavaModule("<test module>");
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
BindingTrace trace = support.getTrace();
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
environment.getProject(),
new TopDownAnalysisParameters(
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
trace,
moduleDescriptor);
support.getModule());
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
PackageViewDescriptor packageView = moduleDescriptor.getPackage(TEST_PACKAGE_FQNAME);
PackageViewDescriptor packageView = support.getModule().getPackage(TEST_PACKAGE_FQNAME);
assert packageView != null : "Test namespace not found";
checkJavaPackage(expectedFile, packageView, trace.getBindingContext(), DONT_INCLUDE_METHODS_OF_OBJECT);
@@ -48,37 +48,38 @@ public class LazyResolveTestUtil {
}
public static InjectorForTopDownAnalyzer getEagerInjectorForTopDownAnalyzer(JetCoreEnvironment environment) {
ModuleDescriptorImpl eagerModuleForLazy = AnalyzerFacadeForJVM.createJavaModule("<eager module for lazy>");
InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(eagerModuleForLazy, environment);
InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(environment);
// This line is required fro the 'jet' namespace to be filled in with functions
tdaInjectorForLazy.getTopDownAnalyzer().analyzeFiles(
Collections.singletonList(JetPsiFactory.createFile(environment.getProject(), "")), Collections.<AnalyzerScriptParameter>emptyList());
return tdaInjectorForLazy;
}
public static InjectorForTopDownAnalyzer createInjectorForTDA(ModuleDescriptorImpl module, JetCoreEnvironment environment) {
public static InjectorForTopDownAnalyzer createInjectorForTDA(JetCoreEnvironment environment) {
JetTestUtils.newTrace(environment);
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
return new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, module);
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
BindingTrace sharedTrace = support.getTrace();
ModuleDescriptorImpl sharedModule = support.getModule();
return new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
}
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
ModuleDescriptorImpl module = AnalyzerFacadeForJVM.createJavaModule("<test module>");
InjectorForTopDownAnalyzer injector = createInjectorForTDA(module, environment);
InjectorForTopDownAnalyzer injector = createInjectorForTDA(environment);
injector.getTopDownAnalyzer().analyzeFiles(files, Collections.<AnalyzerScriptParameter>emptyList());
return module;
return injector.getModuleDescriptor();
}
public static KotlinCodeAnalyzer resolveLazilyWithSession(List<JetFile> files, JetCoreEnvironment environment, boolean addBuiltIns) {
JetTestUtils.newTrace(environment);
Project project = environment.getProject();
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(project).getTrace();
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(project);
BindingTrace sharedTrace = support.getTrace();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, sharedTrace);
support.setModule(injector.getModule());
return AnalyzerFacadeForJVM.createLazyResolveSession(project, files, sharedTrace, injector, addBuiltIns);
}