FIR IDE: add more info to the call resolve error message

This commit is contained in:
Ilya Kirillov
2020-12-18 12:57:30 +01:00
parent c5788290f3
commit af5aa5fa66
@@ -9,9 +9,11 @@ import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.idea.fir.getCandidateSymbols
@@ -26,9 +28,11 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.fir.buildSymbol
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
import org.jetbrains.kotlin.idea.references.FirReferenceResolveHelper
import org.jetbrains.kotlin.idea.util.getElementTextInContext
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtElement
internal class KtFirCallResolver(
override val analysisSession: KtFirAnalysisSession,
@@ -91,8 +95,12 @@ internal class KtFirCallResolver(
is FirErrorNamedReference -> calleeReference.createErrorCallTarget()
is FirSimpleNamedReference ->
error(
"Looks like FirFunctionCall was not resolved to BODY_RESOLVE phase, " +
"consider resolving it containing declaration before starting resolve calls"
"""
Looks like FirFunctionCall was not resolved to BODY_RESOLVE phase,
consider resolving it containing declaration before starting resolve calls
${this.render()}
${(this.psi as? KtElement)?.getElementTextInContext()}
""".trimIndent()
)
else -> error("Unexpected call reference ${calleeReference::class.simpleName}")
} ?: return null