diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveState.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveState.kt index afacf939a68..ae609c128e6 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveState.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveState.kt @@ -39,6 +39,8 @@ abstract class FirModuleResolveState { abstract fun getOrBuildFirFor(element: KtElement, toPhase: FirResolvePhase): FirElement + abstract fun getFirFile(ktFile: KtFile): FirFile + abstract fun getDiagnostics(element: KtElement): List // todo temporary, used only in completion @@ -77,6 +79,9 @@ internal class FirModuleResolveStateImpl( override fun getOrBuildFirFor(element: KtElement, toPhase: FirResolvePhase): FirElement = elementBuilder.getOrBuildFirFor(element, currentModuleSourcesSession.cache, fileStructureCache) + override fun getFirFile(ktFile: KtFile): FirFile = + firFileBuilder.buildRawFirFileWithCaching(ktFile, currentModuleSourcesSession.cache) + override fun getDiagnostics(element: KtElement): List = diagnosticsCollector.getDiagnosticsFor(element) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateForCompletion.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateForCompletion.kt index e9018e7bb55..4e79954de11 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateForCompletion.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirModuleResolveStateForCompletion.kt @@ -47,6 +47,9 @@ internal class FirModuleResolveStateForCompletion( ) } + override fun getFirFile(ktFile: KtFile): FirFile = + originalState.getFirFile(ktFile) + override fun recordPsiToFirMappingsForCompletionFrom(fir: FirDeclaration, firFile: FirFile, ktFile: KtFile) { fir.accept(FirElementsRecorder(), completionMapping) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt index 02541ae8144..8ff1bc0939a 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/components/KtFirCompletionCandidateChecker.kt @@ -66,9 +66,9 @@ internal class KtFirCompletionCandidateChecker( nameExpression: KtSimpleNameExpression, possibleExplicitReceiver: KtExpression?, ): Boolean { - val file = originalFile.getOrBuildFirOfType(firResolveState) + val file = firResolveState.getFirFile(originalFile) val explicitReceiverExpression = possibleExplicitReceiver?.getOrBuildFirOfType(firResolveState) - val resolver = SingleCandidateResolver(firResolveState.firIdeSourcesSession, file) + val resolver = SingleCandidateResolver(firResolveState.currentModuleSourcesSession, file) val implicitReceivers = getImplicitReceivers(originalFile, file, nameExpression) for (implicitReceiverValue in implicitReceivers) { val resolutionParameters = ResolutionParameters(