From 82c6b51fabd765e728072b35628f7427d533e76b Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 25 Mar 2019 17:41:33 +0300 Subject: [PATCH] Simplify initialization process for JavaClassFinderImpl After this change, it's not required to call "initialize" with binding trace and KotlinCodeAnalyzer that is rather useful for FIR --- .../kotlin/load/java/AbstractJavaClassFinder.kt | 13 +++++++------ .../kotlin/load/java/JavaClassFinderImpl.kt | 12 +++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/AbstractJavaClassFinder.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/AbstractJavaClassFinder.kt index 2062eb5f560..9a2fbf5d3af 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/AbstractJavaClassFinder.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/AbstractJavaClassFinder.kt @@ -29,21 +29,22 @@ import javax.inject.Inject abstract class AbstractJavaClassFinder : JavaClassFinder { - lateinit var project: Project - @Inject set - - protected lateinit var baseScope: GlobalSearchScope + protected lateinit var project: Project protected lateinit var javaSearchScope: GlobalSearchScope @Inject fun setScope(scope: GlobalSearchScope) { - this.baseScope = scope + javaSearchScope = FilterOutKotlinSourceFilesScope(scope) + } + + @Inject + open fun setProjectInstance(project: Project) { + this.project = project } @PostConstruct open fun initialize(trace: BindingTrace, codeAnalyzer: KotlinCodeAnalyzer) { - javaSearchScope = FilterOutKotlinSourceFilesScope(baseScope) CodeAnalyzerInitializer.getInstance(project).initialize(trace, codeAnalyzer.moduleDescriptor, codeAnalyzer) } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.kt index 37f02a5019a..10d80766fc2 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.kt @@ -16,25 +16,27 @@ package org.jetbrains.kotlin.load.java +import com.intellij.openapi.project.Project import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade -import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer +import javax.inject.Inject class JavaClassFinderImpl : AbstractJavaClassFinder() { private lateinit var javaFacade: KotlinJavaPsiFacade - override fun initialize(trace: BindingTrace, codeAnalyzer: KotlinCodeAnalyzer) { + @Inject + override fun setProjectInstance(project: Project) { + super.setProjectInstance(project) javaFacade = KotlinJavaPsiFacade.getInstance(project) - super.initialize(trace, codeAnalyzer) } override fun findClass(request: JavaClassFinder.Request): JavaClass? = javaFacade.findClass(request, javaSearchScope) - override fun findPackage(fqName: FqName) = javaFacade.findPackage(fqName.asString(), javaSearchScope)?.let { JavaPackageImpl(it, javaSearchScope) } + override fun findPackage(fqName: FqName) = + javaFacade.findPackage(fqName.asString(), javaSearchScope)?.let { JavaPackageImpl(it, javaSearchScope) } override fun knownClassNamesInPackage(packageFqName: FqName): Set? = javaFacade.knownClassNamesInPackage(packageFqName)