diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt index 81d72368cbb..1257368b4c4 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirIdeJavaModuleBasedSession.kt @@ -9,7 +9,6 @@ import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.fir.FirModuleBasedSession -import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.fir.java.JavaSymbolProvider import org.jetbrains.kotlin.fir.resolve.FirProvider @@ -32,7 +31,7 @@ class FirIdeJavaModuleBasedSession( init { registerComponent( FirProvider::class, - IdeFirProvider(project, scope, RawFirBuilder(this, stubMode = false), this) + IdeFirProvider(project, scope, this) ) registerComponent( FirSymbolProvider::class, diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/IdeFirProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/IdeFirProvider.kt index 997d3be3c24..5445eb1467a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/IdeFirProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/IdeFirProvider.kt @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.psi.KtFile class IdeFirProvider( val project: Project, val scope: GlobalSearchScope, - val builder: RawFirBuilder, val session: FirSession ) : FirProvider() { private val cacheProvider = FirProviderImpl(session) @@ -51,10 +50,13 @@ class IdeFirProvider( } fun getOrBuildFile(ktFile: KtFile): FirFile { - return files.getOrPut(ktFile) { - val file = builder.buildFirFile(ktFile) - cacheProvider.recordFile(file) - file + files[ktFile]?.let { return it } + return synchronized(ktFile) { + files.getOrPut(ktFile) { + val file = RawFirBuilder(session, stubMode = false).buildFirFile(ktFile) + cacheProvider.recordFile(file) + file + } } }