JavaDescriptorResolver is cached by KotlinResolveCache

Accessible via JavaResolveExtension
This commit is contained in:
Andrey Breslav
2014-04-22 18:31:58 +04:00
parent ed79be6d2d
commit 1a92964250
7 changed files with 113 additions and 42 deletions
@@ -54,13 +54,28 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
new ImportPath("kotlin.*"),
new ImportPath("kotlin.io.*"));
public static class JvmSetup extends BasicSetup {
private final JavaDescriptorResolver javaDescriptorResolver;
public JvmSetup(@NotNull ResolveSession session, @NotNull JavaDescriptorResolver javaDescriptorResolver) {
super(session);
this.javaDescriptorResolver = javaDescriptorResolver;
}
@NotNull
public JavaDescriptorResolver getJavaDescriptorResolver() {
return javaDescriptorResolver;
}
}
private AnalyzerFacadeForJVM() {
}
@NotNull
@Override
public Setup createSetup(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
return new BasicSetup(createLazyResolveSession(fileProject, files, new BindingTraceContext(), true));
public JvmSetup createSetup(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
return createSetup(fileProject, files, new BindingTraceContext(), true);
}
@NotNull
@@ -70,6 +85,16 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
@NotNull BindingTrace trace,
boolean addBuiltIns
) {
return createSetup(project, files, trace, addBuiltIns).getLazyResolveSession();
}
private static JvmSetup createSetup(
Project project,
Collection<JetFile> files,
BindingTrace trace,
boolean addBuiltIns
) {
GlobalContextImpl globalContext = ContextPackage.GlobalContext();
DeclarationProviderFactory declarationProviderFactory =
@@ -89,8 +114,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
DependencyKind.BUILT_INS,
KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
}
return resolveWithJava.getResolveSession();
return new JvmSetup(resolveWithJava.getResolveSession(), resolveWithJava.getJavaDescriptorResolver());
}
@NotNull