diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt index 1a13d99f252..7185691cb9d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.analysis.api.fir.components +import com.intellij.openapi.diagnostic.Logger import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.calls.* import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnostic @@ -31,6 +32,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.resolver.AllCandidatesRes import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder +import org.jetbrains.kotlin.analysis.utils.errors.logErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.rethrowExceptionWithDetails import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.analysis.utils.printer.parentOfType @@ -74,6 +76,8 @@ import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addToStdlib.safeAs +private val LOG: Logger = Logger.getInstance(KtFirCallResolver::class.java) + internal class KtFirCallResolver( override val analysisSession: KtFirAnalysisSession, override val token: KtLifetimeToken, @@ -1284,7 +1288,16 @@ internal class KtFirCallResolver( } @KtAnalysisApiInternals - override fun provideAdditionalAttachmentToUnresolvedCall(psi: KtElement, builder: ExceptionAttachmentBuilder) { + override fun unresolvedKtCallError(psi: KtElement): KtErrorCallInfo { + LOG.logErrorWithAttachment("${psi::class.simpleName} should always resolve to a KtCallInfo") { + withPsiEntry("psi", psi) + provideAdditionalAttachmentToUnresolvedCall(psi, this) + } + + return super.unresolvedKtCallError(psi) + } + + private fun provideAdditionalAttachmentToUnresolvedCall(psi: KtElement, builder: ExceptionAttachmentBuilder) { psi.getOrBuildFir(firResolveSession)?.let { builder.withFirEntry("fir", it) } } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt index a288534f83c..5b906b1d3ac 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtCallResolver.kt @@ -12,9 +12,6 @@ import org.jetbrains.kotlin.analysis.api.calls.KtCallInfo import org.jetbrains.kotlin.analysis.api.calls.KtErrorCallInfo import org.jetbrains.kotlin.analysis.api.diagnostics.KtNonBoundToPsiErrorDiagnostic import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion -import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder -import org.jetbrains.kotlin.analysis.utils.errors.logErrorWithAttachment -import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.psi.KtArrayAccessExpression import org.jetbrains.kotlin.psi.KtCallElement import org.jetbrains.kotlin.psi.KtElement @@ -26,26 +23,13 @@ public abstract class KtCallResolver : KtAnalysisSessionComponent() { public abstract fun collectCallCandidates(psi: KtElement): List @KtAnalysisApiInternals - public fun unresolvedKtCallError(psi: KtElement): KtErrorCallInfo { - LOG.logErrorWithAttachment("${psi::class.simpleName} should always resolve to a KtCallInfo") { - withPsiEntry("psi", psi) - provideAdditionalAttachmentToUnresolvedCall(psi, this) - } + public open fun unresolvedKtCallError(psi: KtElement): KtErrorCallInfo { return KtErrorCallInfo( _candidateCalls = emptyList(), KtNonBoundToPsiErrorDiagnostic(factoryName = null, "Unresolved call", token), token ) } - - @KtAnalysisApiInternals - protected open fun provideAdditionalAttachmentToUnresolvedCall(psi: KtElement, builder: ExceptionAttachmentBuilder) { - } - - public companion object { - @KtAnalysisApiInternals - public val LOG: Logger = Logger.getInstance(KtCallResolver::class.java) - } } @OptIn(KtAnalysisApiInternals::class)