FIR IDE: consider FirErrorReferenceWithCandidate as reference with error
This commit is contained in:
+8
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.calls.FirErrorReferenceWithCandidate
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.idea.fir.getCandidateSymbols
|
import org.jetbrains.kotlin.idea.fir.getCandidateSymbols
|
||||||
@@ -93,6 +94,7 @@ internal class KtFirCallResolver(
|
|||||||
val target = when (val calleeReference = calleeReference) {
|
val target = when (val calleeReference = calleeReference) {
|
||||||
is FirResolvedNamedReference -> calleeReference.getKtFunctionOrConstructorSymbol()?.let { KtSuccessCallTarget(it) }
|
is FirResolvedNamedReference -> calleeReference.getKtFunctionOrConstructorSymbol()?.let { KtSuccessCallTarget(it) }
|
||||||
is FirErrorNamedReference -> calleeReference.createErrorCallTarget()
|
is FirErrorNamedReference -> calleeReference.createErrorCallTarget()
|
||||||
|
is FirErrorReferenceWithCandidate -> calleeReference.createErrorCallTarget()
|
||||||
is FirSimpleNamedReference ->
|
is FirSimpleNamedReference ->
|
||||||
error(
|
error(
|
||||||
"""
|
"""
|
||||||
@@ -113,6 +115,12 @@ internal class KtFirCallResolver(
|
|||||||
KtSimpleDiagnostic(diagnostic.reason)
|
KtSimpleDiagnostic(diagnostic.reason)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
private fun FirErrorReferenceWithCandidate.createErrorCallTarget(): KtErrorCallTarget =
|
||||||
|
KtErrorCallTarget(
|
||||||
|
getCandidateSymbols().mapNotNull { it.fir.buildSymbol(firSymbolBuilder) as? KtFunctionLikeSymbol },
|
||||||
|
KtSimpleDiagnostic(diagnostic.reason)
|
||||||
|
)
|
||||||
|
|
||||||
private fun FirResolvedNamedReference.getKtFunctionOrConstructorSymbol(): KtFunctionLikeSymbol? =
|
private fun FirResolvedNamedReference.getKtFunctionOrConstructorSymbol(): KtFunctionLikeSymbol? =
|
||||||
resolvedSymbol.fir.buildSymbol(firSymbolBuilder) as? KtFunctionLikeSymbol
|
resolvedSymbol.fir.buildSymbol(firSymbolBuilder) as? KtFunctionLikeSymbol
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user