From 45bd70daec01fac5b76f94d9e5f82e38c1bb03cc Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 25 Dec 2013 14:03:16 +0400 Subject: [PATCH] JavaPackageFragmentProvider is only accessible through JavaDescriptorResolver We need this to guarantee that only one provider is used: either lazy or eager. --- .../jet/cli/jvm/repl/ReplInterpreter.java | 2 +- .../di/InjectorForTopDownAnalyzerForJvm.java | 18 +++++++----------- .../resolve/java/AnalyzerFacadeForJVM.java | 2 +- .../jet/jvm/compiler/AbstractLoadJavaTest.java | 2 +- .../lang/resolve/lazy/LazyResolveTestUtil.java | 2 +- .../injectors/GenerateInjectors.java | 2 +- 6 files changed, 12 insertions(+), 16 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java index bcf7a8bb1b7..ae19d4616a6 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java @@ -105,7 +105,7 @@ public class ReplInterpreter { injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider()); module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider()); - module.addFragmentProvider(injector.getJavaPackageFragmentProvider()); + module.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider()); List classpath = Lists.newArrayList(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 8eec701b862..9af8e81f26d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -248,13 +248,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver); psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); - this.javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache); - this.javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver); - this.javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder); - this.javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver); - this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder); - this.javaPackageFragmentProvider.setMemberResolver(javaMemberResolver); - this.javaPackageFragmentProvider.setModule(moduleDescriptor); + javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache); + javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver); + javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder); + javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver); + javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder); + javaPackageFragmentProvider.setMemberResolver(javaMemberResolver); + javaPackageFragmentProvider.setModule(moduleDescriptor); declarationResolver.setAnnotationResolver(annotationResolver); declarationResolver.setContext(topDownAnalysisContext); @@ -442,8 +442,4 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly return this.javaDescriptorResolver; } - public JavaPackageFragmentProviderImpl getJavaPackageFragmentProvider() { - return this.javaPackageFragmentProvider; - } - } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index 53aad298b15..684c3b8bc7e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -196,7 +196,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade { InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); try { - module.addFragmentProvider(injector.getJavaPackageFragmentProvider()); + module.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider()); injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters); BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ? new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) : diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java index 41311b335ed..0c9d0f73be0 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractLoadJavaTest.java @@ -148,7 +148,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { trace, module); - module.addFragmentProvider(injectorForAnalyzer.getJavaPackageFragmentProvider()); + module.addFragmentProvider(injectorForAnalyzer.getJavaDescriptorResolver().getPackageFragmentProvider()); injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.emptyList()); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java index abadcf2f2b5..937b7823cb3 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java @@ -59,7 +59,7 @@ public class LazyResolveTestUtil { InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule); - sharedModule.addFragmentProvider(injector.getJavaPackageFragmentProvider()); + sharedModule.addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider()); return injector; } diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java index f2fcc5031af..4e70f05984a 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java @@ -132,7 +132,7 @@ public class GenerateInjectors { generator.addField(PsiBasedMethodSignatureChecker.class); generator.addField(PsiBasedExternalAnnotationResolver.class); generator.addField(MutablePackageFragmentProvider.class); - generator.addPublicField(JavaPackageFragmentProviderImpl.class); + generator.addField(JavaPackageFragmentProviderImpl.class); generator.addField(false, VirtualFileFinder.class, "virtualFileFinder", new GivenExpression( VirtualFileFinder.class.getName() + ".SERVICE.getInstance(project)"));