Remove dependency of module 'frontend.java' on 'javac-wrapper'

This breaks the circular dependency between them
This commit is contained in:
Alexander Udalov
2017-06-02 18:34:47 +03:00
parent 1df13e0bc9
commit cc2f607be3
3 changed files with 32 additions and 27 deletions
-1
View File
@@ -11,6 +11,5 @@
<orderEntry type="library" scope="PROVIDED" name="intellij-core" level="project" />
<orderEntry type="module" module-name="descriptor.loader.java" exported="" />
<orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="javac-wrapper" />
</component>
</module>
@@ -28,9 +28,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackagePartProvider
import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.javac.components.JavacBasedClassFinder
import org.jetbrains.kotlin.javac.components.JavacBasedSourceElementFactory
import org.jetbrains.kotlin.javac.components.StubJavaResolverCache
import org.jetbrains.kotlin.load.java.AbstractJavaClassFinder
import org.jetbrains.kotlin.load.java.InternalFlexibleTypeTransformer
import org.jetbrains.kotlin.load.java.JavaClassFinderImpl
import org.jetbrains.kotlin.load.java.components.*
@@ -50,8 +48,7 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
private fun StorageComponentContainer.configureJavaTopDownAnalysis(
moduleContentScope: GlobalSearchScope,
project: Project,
lookupTracker: LookupTracker,
useJavac: Boolean
lookupTracker: LookupTracker
) {
useInstance(moduleContentScope)
useInstance(lookupTracker)
@@ -63,16 +60,6 @@ private fun StorageComponentContainer.configureJavaTopDownAnalysis(
useInstance(VirtualFileFinderFactory.getInstance(project).create(moduleContentScope))
if (useJavac) {
useImpl<JavacBasedClassFinder>()
useImpl<StubJavaResolverCache>()
useImpl<JavacBasedSourceElementFactory>()
} else {
useImpl<JavaClassFinderImpl>()
useImpl<LazyResolveBasedCache>()
useImpl<JavaSourceElementFactoryImpl>()
}
useImpl<JavaPropertyInitializerEvaluatorImpl>()
useImpl<AnnotationResolverImpl>()
useImpl<SignaturePropagatorImpl>()
@@ -97,10 +84,19 @@ fun createContainerForLazyResolveWithJava(
jvmTarget: JvmTarget,
languageVersionSettings: LanguageVersionSettings,
useBuiltInsProvider: Boolean,
useJavac: Boolean = false
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null
): StorageComponentContainer = createContainer("LazyResolveWithJava", JvmPlatform) {
configureModule(moduleContext, JvmPlatform, jvmTarget, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker, useJavac)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker)
if (configureJavaClassFinder != null) {
configureJavaClassFinder()
}
else {
useImpl<JavaClassFinderImpl>()
useImpl<LazyResolveBasedCache>()
useImpl<JavaSourceElementFactoryImpl>()
}
useInstance(packagePartProvider)
useInstance(moduleClassResolver)
@@ -115,10 +111,7 @@ fun createContainerForLazyResolveWithJava(
targetEnvironment.configure(this)
}.apply {
if (useJavac)
get<JavacBasedClassFinder>().initialize(bindingTrace, get<KotlinCodeAnalyzer>())
else
get<JavaClassFinderImpl>().initialize(bindingTrace, get<KotlinCodeAnalyzer>())
get<AbstractJavaClassFinder>().initialize(bindingTrace, get<KotlinCodeAnalyzer>())
}
@@ -132,11 +125,11 @@ fun createContainerForTopDownAnalyzerForJvm(
moduleClassResolver: ModuleClassResolver,
jvmTarget: JvmTarget,
languageVersionSettings: LanguageVersionSettings,
useJavac: Boolean = false
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null
): ComponentProvider = createContainerForLazyResolveWithJava(
moduleContext, bindingTrace, declarationProviderFactory, moduleContentScope, moduleClassResolver,
CompilerEnvironment, lookupTracker, packagePartProvider, jvmTarget, languageVersionSettings,
useBuiltInsProvider = true, useJavac = useJavac
useBuiltInsProvider = true, configureJavaClassFinder = configureJavaClassFinder
)