Injector for additional body resolve with lazy analyzer

Fix resolve JS modules with JVM resolver
This commit is contained in:
Nikolay Krasko
2014-09-18 15:19:03 +04:00
parent eae86e035f
commit ad05b5a709
8 changed files with 316 additions and 18 deletions
@@ -42,6 +42,7 @@ import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory
import org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM
import org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer
import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider
import org.jetbrains.jet.context.LazyResolveToken
@@ -69,7 +70,8 @@ public fun createInjectorGenerators(): List<DependencyInjectorGenerator> =
generatorForMacro(),
generatorForTests(),
generatorForLazyResolve(),
generatorForBodyResolve()
generatorForBodyResolve(),
generatorForLazyBodyResolve()
)
private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
@@ -92,6 +94,21 @@ private fun generatorForTopDownAnalyzerBasic() =
parameter(javaClass<AdditionalCheckerProvider>())
}
private fun generatorForLazyBodyResolve() =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyBodyResolve") {
parameter(javaClass<Project>())
parameter(javaClass<GlobalContext>(), useAsContext = true)
parameter(javaClass<KotlinCodeAnalyzer>(), name = "analyzer")
parameter(javaClass<BindingTrace>())
parameter(javaClass<AdditionalCheckerProvider>())
field(javaClass<ModuleDescriptor>(), init = GivenExpression("analyzer.getModuleDescriptor()"), useAsContext = true)
publicFields(
javaClass<LazyTopDownAnalyzer>()
)
}
private fun generatorForTopDownAnalyzerForJs() =
generator("js/js.frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs") {
commonForTopDownAnalyzer()