JavaPackageFragmentProvider is only accessible through JavaDescriptorResolver

We need this to guarantee that only one provider is used: either lazy or eager.
This commit is contained in:
Andrey Breslav
2013-12-25 14:03:16 +04:00
parent cedbc0ea53
commit 45bd70daec
6 changed files with 12 additions and 16 deletions
@@ -105,7 +105,7 @@ public class ReplInterpreter {
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider()); module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider());
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider()); module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
module.addFragmentProvider(injector.getJavaPackageFragmentProvider()); module.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
List<URL> classpath = Lists.newArrayList(); List<URL> classpath = Lists.newArrayList();
@@ -248,13 +248,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver); psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
this.javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache); javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
this.javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver); javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
this.javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder); javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
this.javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver); javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder); javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
this.javaPackageFragmentProvider.setMemberResolver(javaMemberResolver); javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
this.javaPackageFragmentProvider.setModule(moduleDescriptor); javaPackageFragmentProvider.setModule(moduleDescriptor);
declarationResolver.setAnnotationResolver(annotationResolver); declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext); declarationResolver.setContext(topDownAnalysisContext);
@@ -442,8 +442,4 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
return this.javaDescriptorResolver; return this.javaDescriptorResolver;
} }
public JavaPackageFragmentProviderImpl getJavaPackageFragmentProvider() {
return this.javaPackageFragmentProvider;
}
} }
@@ -196,7 +196,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
try { try {
module.addFragmentProvider(injector.getJavaPackageFragmentProvider()); module.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters); injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ? BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) : new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
@@ -148,7 +148,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
trace, trace,
module); module);
module.addFragmentProvider(injectorForAnalyzer.getJavaPackageFragmentProvider()); module.addFragmentProvider(injectorForAnalyzer.getJavaDescriptorResolver().getPackageFragmentProvider());
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList()); injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
@@ -59,7 +59,7 @@ public class LazyResolveTestUtil {
InjectorForTopDownAnalyzerForJvm injector = InjectorForTopDownAnalyzerForJvm injector =
new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule); new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
sharedModule.addFragmentProvider(injector.getJavaPackageFragmentProvider()); sharedModule.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
return injector; return injector;
} }
@@ -132,7 +132,7 @@ public class GenerateInjectors {
generator.addField(PsiBasedMethodSignatureChecker.class); generator.addField(PsiBasedMethodSignatureChecker.class);
generator.addField(PsiBasedExternalAnnotationResolver.class); generator.addField(PsiBasedExternalAnnotationResolver.class);
generator.addField(MutablePackageFragmentProvider.class); generator.addField(MutablePackageFragmentProvider.class);
generator.addPublicField(JavaPackageFragmentProviderImpl.class); generator.addField(JavaPackageFragmentProviderImpl.class);
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder", generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
new GivenExpression( new GivenExpression(
VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)")); VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));