From 434274019524d7e6a1a5a5da173c52506f2bcfe1 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 27 Nov 2014 17:39:59 +0300 Subject: [PATCH] Refactoring: move common code for ResolveSession init to method --- .../jet/cli/jvm/repl/ReplInterpreter.java | 6 +- .../di/InjectorForLazyResolveWithJava.java | 22 ++--- .../di/InjectorForTopDownAnalyzerForJvm.java | 92 +++++++++---------- .../lang/resolve/java/JvmAnalyzerFacade.kt | 5 +- .../java/TopDownAnalyzerFacadeForJVM.java | 4 +- .../InjectorForLazyTopDownAnalyzerBasic.java | 22 ++--- .../generators/injectors/GenerateInjectors.kt | 41 ++++----- .../di/InjectorForTopDownAnalyzerForJs.java | 78 ++++++++-------- .../NoInternalVisibilityInStdLibTest.kt | 1 + 9 files changed, 135 insertions(+), 136 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 f0b610de12a..4e41ae7480c 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 @@ -123,9 +123,9 @@ public class ReplInterpreter { context, trace, module, - ProjectScope.getAllScope(project), - scriptDeclarationFactory - ); + scriptDeclarationFactory, + ProjectScope.getAllScope(project) + ); this.topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters); this.topDownAnalyzer = injector.getLazyTopDownAnalyzer(); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java index b17a608d093..fb3ecc1f871 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -19,13 +19,13 @@ package org.jetbrains.jet.di; import com.intellij.openapi.project.Project; import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.storage.StorageManager; +import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.java.lazy.ModuleClassResolver; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; +import com.intellij.psi.search.GlobalSearchScope; +import org.jetbrains.jet.lang.resolve.java.lazy.ModuleClassResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl; @@ -79,13 +79,13 @@ public class InjectorForLazyResolveWithJava { private final Project project; private final GlobalContext globalContext; private final StorageManager storageManager; + private final BindingTrace bindingTrace; private final ModuleDescriptorImpl module; private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final GlobalSearchScope moduleContentScope; - private final BindingTrace bindingTrace; private final DeclarationProviderFactory declarationProviderFactory; - private final ModuleClassResolver moduleClassResolver; private final ResolveSession resolveSession; + private final GlobalSearchScope moduleContentScope; + private final ModuleClassResolver moduleClassResolver; private final JavaDescriptorResolver javaDescriptorResolver; private final VirtualFileFinder virtualFileFinder; private final JavaClassFinderImpl javaClassFinder; @@ -133,22 +133,22 @@ public class InjectorForLazyResolveWithJava { public InjectorForLazyResolveWithJava( @NotNull Project project, @NotNull GlobalContext globalContext, - @NotNull ModuleDescriptorImpl module, - @NotNull GlobalSearchScope moduleContentScope, @NotNull BindingTrace bindingTrace, + @NotNull ModuleDescriptorImpl module, @NotNull DeclarationProviderFactory declarationProviderFactory, + @NotNull GlobalSearchScope moduleContentScope, @NotNull ModuleClassResolver moduleClassResolver ) { this.project = project; this.globalContext = globalContext; this.storageManager = globalContext.getStorageManager(); + this.bindingTrace = bindingTrace; this.module = module; this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); - this.moduleContentScope = moduleContentScope; - this.bindingTrace = bindingTrace; this.declarationProviderFactory = declarationProviderFactory; - this.moduleClassResolver = moduleClassResolver; this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); + this.moduleContentScope = moduleContentScope; + this.moduleClassResolver = moduleClassResolver; this.javaClassFinder = new JavaClassFinderImpl(); this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); this.traceBasedErrorReporter = new TraceBasedErrorReporter(); 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 9dfe01733b1..00f46233282 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -22,10 +22,10 @@ import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; -import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; +import com.intellij.psi.search.GlobalSearchScope; +import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.DeserializationComponentsForJava; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; @@ -43,7 +43,6 @@ import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver; import org.jetbrains.jet.lang.resolve.java.JavaLazyAnalyzerPostConstruct; import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider; import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider; -import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; @@ -64,20 +63,21 @@ import org.jetbrains.jet.lang.resolve.PartialBodyResolveProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; +import org.jetbrains.jet.lang.psi.JetImportsFactory; +import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; +import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; +import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension; -import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.resolve.ImportsResolver; -import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; -import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; @@ -96,10 +96,10 @@ public class InjectorForTopDownAnalyzerForJvm { private final BindingTrace bindingTrace; private final ModuleDescriptorImpl module; private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final GlobalSearchScope moduleContentScope; private final DeclarationProviderFactory declarationProviderFactory; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final ResolveSession resolveSession; + private final GlobalSearchScope moduleContentScope; + private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final JavaDescriptorResolver javaDescriptorResolver; private final DeserializationComponentsForJava deserializationComponentsForJava; private final VirtualFileFinder virtualFileFinder; @@ -117,7 +117,6 @@ public class InjectorForTopDownAnalyzerForJvm { private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct; private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider; private final AdditionalCheckerProvider additionalCheckerProvider; - private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; @@ -138,20 +137,21 @@ public class InjectorForTopDownAnalyzerForJvm { private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; private final TaskPrioritizer taskPrioritizer; + private final JetImportsFactory jetImportsFactory; + private final ScopeProvider scopeProvider; + private final ScriptBodyResolver scriptBodyResolver; + private final BodyResolver bodyResolver; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; private final DeclarationResolver declarationResolver; private final ImportsResolver importsResolver; - private final JetImportsFactory jetImportsFactory; private final OverloadResolver overloadResolver; private final OverrideResolver overrideResolver; private final TopDownAnalyzer topDownAnalyzer; private final TypeHierarchyResolver typeHierarchyResolver; private final ScriptHeaderResolver scriptHeaderResolver; - private final ScopeProvider scopeProvider; private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; @@ -163,8 +163,8 @@ public class InjectorForTopDownAnalyzerForJvm { @NotNull GlobalContext globalContext, @NotNull BindingTrace bindingTrace, @NotNull ModuleDescriptorImpl module, - @NotNull GlobalSearchScope moduleContentScope, - @NotNull DeclarationProviderFactory declarationProviderFactory + @NotNull DeclarationProviderFactory declarationProviderFactory, + @NotNull GlobalSearchScope moduleContentScope ) { this.project = project; this.globalContext = globalContext; @@ -172,10 +172,10 @@ public class InjectorForTopDownAnalyzerForJvm { this.bindingTrace = bindingTrace; this.module = module; this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); - this.moduleContentScope = moduleContentScope; this.declarationProviderFactory = declarationProviderFactory; - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); + this.moduleContentScope = moduleContentScope; + this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); this.javaClassFinder = new JavaClassFinderImpl(); this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); this.traceBasedErrorReporter = new TraceBasedErrorReporter(); @@ -198,7 +198,6 @@ public class InjectorForTopDownAnalyzerForJvm { this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct(); this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); this.additionalCheckerProvider = org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider.INSTANCE$; - this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); @@ -219,20 +218,29 @@ public class InjectorForTopDownAnalyzerForJvm { this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); this.taskPrioritizer = new TaskPrioritizer(storageManager); + this.jetImportsFactory = new JetImportsFactory(); + this.scopeProvider = new ScopeProvider(getResolveSession()); + this.scriptBodyResolver = new ScriptBodyResolver(); + this.bodyResolver = new BodyResolver(); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); this.declarationResolver = new DeclarationResolver(); this.importsResolver = new ImportsResolver(); - this.jetImportsFactory = new JetImportsFactory(); this.overloadResolver = new OverloadResolver(); this.overrideResolver = new OverrideResolver(); this.topDownAnalyzer = new TopDownAnalyzer(); this.typeHierarchyResolver = new TypeHierarchyResolver(); this.scriptHeaderResolver = new ScriptHeaderResolver(); - this.scopeProvider = new ScopeProvider(getResolveSession()); + + this.resolveSession.setAnnotationResolve(annotationResolver); + this.resolveSession.setDescriptorResolver(descriptorResolver); + this.resolveSession.setJetImportFactory(jetImportsFactory); + this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); + this.resolveSession.setScopeProvider(scopeProvider); + this.resolveSession.setScriptBodyResolver(scriptBodyResolver); + this.resolveSession.setTypeResolver(typeResolver); this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver); this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); @@ -243,14 +251,6 @@ public class InjectorForTopDownAnalyzerForJvm { this.lazyTopDownAnalyzer.setTopDownAnalyzer(topDownAnalyzer); this.lazyTopDownAnalyzer.setTrace(bindingTrace); - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); javaClassFinder.setProject(project); javaClassFinder.setScope(moduleContentScope); @@ -272,16 +272,6 @@ public class InjectorForTopDownAnalyzerForJvm { javaLazyAnalyzerPostConstruct.setProject(project); javaLazyAnalyzerPostConstruct.setTrace(bindingTrace); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - annotationResolver.setCallResolver(callResolver); annotationResolver.setStorageManager(storageManager); annotationResolver.setTypeResolver(typeResolver); @@ -332,6 +322,20 @@ public class InjectorForTopDownAnalyzerForJvm { candidateResolver.setArgumentTypeResolver(argumentTypeResolver); + jetImportsFactory.setProject(project); + + scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); + + bodyResolver.setAnnotationResolver(annotationResolver); + bodyResolver.setCallResolver(callResolver); + bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + bodyResolver.setDeclarationsChecker(declarationsChecker); + bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); + bodyResolver.setExpressionTypingServices(expressionTypingServices); + bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); + bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); + bodyResolver.setTrace(bindingTrace); + controlFlowAnalyzer.setTrace(bindingTrace); declarationsChecker.setDescriptorResolver(descriptorResolver); @@ -340,8 +344,6 @@ public class InjectorForTopDownAnalyzerForJvm { functionAnalyzerExtension.setTrace(bindingTrace); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - declarationResolver.setAnnotationResolver(annotationResolver); declarationResolver.setDescriptorResolver(descriptorResolver); declarationResolver.setImportsResolver(importsResolver); @@ -352,8 +354,6 @@ public class InjectorForTopDownAnalyzerForJvm { importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); importsResolver.setTrace(bindingTrace); - jetImportsFactory.setProject(project); - overloadResolver.setTrace(bindingTrace); overrideResolver.setTrace(bindingTrace); @@ -387,14 +387,14 @@ public class InjectorForTopDownAnalyzerForJvm { public void destroy() { } - public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { - return this.lazyTopDownAnalyzer; - } - public ResolveSession getResolveSession() { return this.resolveSession; } + public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { + return this.lazyTopDownAnalyzer; + } + public JavaDescriptorResolver getJavaDescriptorResolver() { return this.javaDescriptorResolver; } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAnalyzerFacade.kt b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAnalyzerFacade.kt index b6647c60ebd..f0c68ec8171 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAnalyzerFacade.kt +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JvmAnalyzerFacade.kt @@ -64,9 +64,10 @@ public object JvmAnalyzerFacade : AnalyzerFacade = generatorForLazyBodyResolve() ) +private fun DependencyInjectorGenerator.commonForResolveSessionBased() { + parameter(javaClass()) + parameter(javaClass(), useAsContext = true) + parameter(javaClass()) + parameter(javaClass(), name = "module", useAsContext = true) + parameter(javaClass()) + + publicField(javaClass()) +} + private fun generatorForTopDownAnalyzerBasic() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic") { parameter(javaClass()) @@ -95,14 +105,9 @@ private fun generatorForTopDownAnalyzerBasic() = private fun generatorForLazyTopDownAnalyzerBasic() = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyTopDownAnalyzerBasic") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) + commonForResolveSessionBased() publicFields( - javaClass(), javaClass() ) @@ -127,17 +132,12 @@ private fun generatorForLazyBodyResolve() = private fun generatorForTopDownAnalyzerForJs() = generator("js/js.frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass(), name = "module", useAsContext = true) - parameter(javaClass()) + commonForResolveSessionBased() publicFields( javaClass() ) - field(javaClass()) field(javaClass()) field(javaClass(), init = GivenExpression(javaClass().getCanonicalName() + ".INSTANCE$")) @@ -145,16 +145,12 @@ private fun generatorForTopDownAnalyzerForJs() = private fun generatorForTopDownAnalyzerForJvm() = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass()) - parameter(javaClass(), name = "module", useAsContext = true) + commonForResolveSessionBased() + parameter(javaClass(), name = "moduleContentScope") - parameter(javaClass()) publicFields( javaClass(), - javaClass(), javaClass(), javaClass() ) @@ -220,18 +216,15 @@ private fun generatorForJavaDescriptorResolver() = private fun generatorForLazyResolveWithJava() = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForLazyResolveWithJava") { - parameter(javaClass()) - parameter(javaClass(), useAsContext = true) - parameter(javaClass(), name = "module", useAsContext = true) + commonForResolveSessionBased() + parameter(javaClass(), name = "moduleContentScope") + parameters( - javaClass(), - javaClass(), javaClass() ) publicFields( - javaClass(), javaClass() ) diff --git a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 62138e9eb11..9ed11a38f88 100644 --- a/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -23,11 +23,10 @@ import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; +import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider; -import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; @@ -49,20 +48,21 @@ import org.jetbrains.jet.lang.resolve.PartialBodyResolveProvider; import org.jetbrains.jet.lang.resolve.calls.CallCompleter; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.tasks.TaskPrioritizer; +import org.jetbrains.jet.lang.psi.JetImportsFactory; +import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; +import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; +import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.ModifiersChecker; import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension; -import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.resolve.ImportsResolver; -import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; -import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -77,11 +77,10 @@ public class InjectorForTopDownAnalyzerForJs { private final ModuleDescriptorImpl module; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final DeclarationProviderFactory declarationProviderFactory; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final ResolveSession resolveSession; + private final LazyTopDownAnalyzer lazyTopDownAnalyzer; private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final AdditionalCheckerProvider additionalCheckerProvider; - private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; @@ -103,20 +102,21 @@ public class InjectorForTopDownAnalyzerForJs { private final CallCompleter callCompleter; private final CandidateResolver candidateResolver; private final TaskPrioritizer taskPrioritizer; + private final JetImportsFactory jetImportsFactory; + private final ScopeProvider scopeProvider; + private final ScriptBodyResolver scriptBodyResolver; + private final BodyResolver bodyResolver; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final ModifiersChecker modifiersChecker; private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; private final DeclarationResolver declarationResolver; private final ImportsResolver importsResolver; - private final JetImportsFactory jetImportsFactory; private final OverloadResolver overloadResolver; private final OverrideResolver overrideResolver; private final TopDownAnalyzer topDownAnalyzer; private final TypeHierarchyResolver typeHierarchyResolver; private final ScriptHeaderResolver scriptHeaderResolver; - private final ScopeProvider scopeProvider; public InjectorForTopDownAnalyzerForJs( @NotNull Project project, @@ -132,11 +132,10 @@ public class InjectorForTopDownAnalyzerForJs { this.module = module; this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap(); this.declarationProviderFactory = declarationProviderFactory; - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); this.resolveSession = new ResolveSession(project, globalContext, module, declarationProviderFactory, bindingTrace); + this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(module); this.additionalCheckerProvider = org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider.Empty.INSTANCE$; - this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); @@ -158,20 +157,29 @@ public class InjectorForTopDownAnalyzerForJs { this.candidateResolver = new CandidateResolver(); this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); this.taskPrioritizer = new TaskPrioritizer(storageManager); + this.jetImportsFactory = new JetImportsFactory(); + this.scopeProvider = new ScopeProvider(getResolveSession()); + this.scriptBodyResolver = new ScriptBodyResolver(); + this.bodyResolver = new BodyResolver(); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); this.declarationResolver = new DeclarationResolver(); this.importsResolver = new ImportsResolver(); - this.jetImportsFactory = new JetImportsFactory(); this.overloadResolver = new OverloadResolver(); this.overrideResolver = new OverrideResolver(); this.topDownAnalyzer = new TopDownAnalyzer(); this.typeHierarchyResolver = new TypeHierarchyResolver(); this.scriptHeaderResolver = new ScriptHeaderResolver(); - this.scopeProvider = new ScopeProvider(resolveSession); + + this.resolveSession.setAnnotationResolve(annotationResolver); + this.resolveSession.setDescriptorResolver(descriptorResolver); + this.resolveSession.setJetImportFactory(jetImportsFactory); + this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); + this.resolveSession.setScopeProvider(scopeProvider); + this.resolveSession.setScriptBodyResolver(scriptBodyResolver); + this.resolveSession.setTypeResolver(typeResolver); this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver); this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); @@ -182,24 +190,6 @@ public class InjectorForTopDownAnalyzerForJs { this.lazyTopDownAnalyzer.setTopDownAnalyzer(topDownAnalyzer); this.lazyTopDownAnalyzer.setTrace(bindingTrace); - resolveSession.setAnnotationResolve(annotationResolver); - resolveSession.setDescriptorResolver(descriptorResolver); - resolveSession.setJetImportFactory(jetImportsFactory); - resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - resolveSession.setScopeProvider(scopeProvider); - resolveSession.setScriptBodyResolver(scriptBodyResolver); - resolveSession.setTypeResolver(typeResolver); - - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - annotationResolver.setCallResolver(callResolver); annotationResolver.setStorageManager(storageManager); annotationResolver.setTypeResolver(typeResolver); @@ -250,6 +240,20 @@ public class InjectorForTopDownAnalyzerForJs { candidateResolver.setArgumentTypeResolver(argumentTypeResolver); + jetImportsFactory.setProject(project); + + scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); + + bodyResolver.setAnnotationResolver(annotationResolver); + bodyResolver.setCallResolver(callResolver); + bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + bodyResolver.setDeclarationsChecker(declarationsChecker); + bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); + bodyResolver.setExpressionTypingServices(expressionTypingServices); + bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); + bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); + bodyResolver.setTrace(bindingTrace); + controlFlowAnalyzer.setTrace(bindingTrace); declarationsChecker.setDescriptorResolver(descriptorResolver); @@ -258,8 +262,6 @@ public class InjectorForTopDownAnalyzerForJs { functionAnalyzerExtension.setTrace(bindingTrace); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - declarationResolver.setAnnotationResolver(annotationResolver); declarationResolver.setDescriptorResolver(descriptorResolver); declarationResolver.setImportsResolver(importsResolver); @@ -270,8 +272,6 @@ public class InjectorForTopDownAnalyzerForJs { importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); importsResolver.setTrace(bindingTrace); - jetImportsFactory.setProject(project); - overloadResolver.setTrace(bindingTrace); overrideResolver.setTrace(bindingTrace); @@ -299,6 +299,10 @@ public class InjectorForTopDownAnalyzerForJs { public void destroy() { } + public ResolveSession getResolveSession() { + return this.resolveSession; + } + public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { return this.lazyTopDownAnalyzer; } diff --git a/libraries/stdlib/validator/src/test/kotlin/NoInternalVisibilityInStdLibTest.kt b/libraries/stdlib/validator/src/test/kotlin/NoInternalVisibilityInStdLibTest.kt index 938d29b643d..e9944ac7ff4 100644 --- a/libraries/stdlib/validator/src/test/kotlin/NoInternalVisibilityInStdLibTest.kt +++ b/libraries/stdlib/validator/src/test/kotlin/NoInternalVisibilityInStdLibTest.kt @@ -42,6 +42,7 @@ import org.jetbrains.k2js.config.LibrarySourcesConfig import org.jetbrains.k2js.config.EcmaVersion import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS import com.intellij.openapi.Disposable +import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport private val ANALYZE_PACKAGE_ROOTS_FOR_JVM = listOf("kotlin") private val ANALYZE_PACKAGE_ROOTS_FOR_JS = listOf("kotlin", "jquery", "html5")