[FIR] Get rid of candidateSymbol in FirNamedReference
`candidateSymbol` has any reasonable meaning only for references with not completed candidate, so this property is moved from FirNamedReference to new node FirNamedReferenceWithCandidateSymbol, which has real implementation only in :resolve module (`FirNamedReferenceWithCandidate`)
This commit is contained in:
committed by
Space Team
parent
366edcfe3c
commit
4bddb27ca3
+2
-7
@@ -24,8 +24,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.toFirDiagnostics
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
@@ -89,11 +88,7 @@ internal interface KtFirAnalysisSessionComponent {
|
||||
}
|
||||
|
||||
fun FirQualifiedAccess.createConeSubstitutorFromTypeArguments(): ConeSubstitutor? {
|
||||
val symbol = when (val calleeReference = calleeReference) {
|
||||
is FirResolvedNamedReference -> calleeReference.resolvedSymbol as? FirCallableSymbol<*>
|
||||
is FirErrorNamedReference -> calleeReference.candidateSymbol as? FirCallableSymbol<*>
|
||||
else -> null
|
||||
} ?: return null
|
||||
val symbol = calleeReference.toResolvedCallableSymbol() ?: return null
|
||||
return createConeSubstitutorFromTypeArguments(symbol)
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -336,8 +336,7 @@ internal class KtFirCallResolver(
|
||||
resolveFragmentOfCall: Boolean
|
||||
): KtCall? {
|
||||
val targetSymbol = candidate?.symbol
|
||||
?: (fir.calleeReference as? FirResolvedNamedReference)?.resolvedSymbol
|
||||
?: (fir.calleeReference as? FirNamedReference)?.candidateSymbol
|
||||
?: fir.calleeReference.toResolvedBaseSymbol()
|
||||
?: return null
|
||||
if (targetSymbol !is FirCallableSymbol<*>) return null
|
||||
if (targetSymbol is FirErrorFunctionSymbol || targetSymbol is FirErrorPropertySymbol) return null
|
||||
|
||||
-1
@@ -267,7 +267,6 @@ private val FirPropertyAccessExpression.propertyReferenceName: Name?
|
||||
private val FirQualifiedAccessExpression.referencedCallableSymbol: FirCallableSymbol<*>?
|
||||
get() {
|
||||
return toResolvedCallableSymbol()
|
||||
?: (calleeReference as? FirNamedReference)?.candidateSymbol as? FirCallableSymbol<*>
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-8
@@ -544,14 +544,7 @@ private class ElementsToShortenCollector(
|
||||
private fun findUnambiguousReferencedCallableId(namedReference: FirNamedReference): FirCallableSymbol<*>? {
|
||||
val unambiguousSymbol = when (namedReference) {
|
||||
is FirResolvedNamedReference -> namedReference.resolvedSymbol
|
||||
is FirErrorNamedReference -> {
|
||||
val candidateSymbol = namedReference.candidateSymbol
|
||||
if (candidateSymbol !is FirErrorFunctionSymbol) {
|
||||
candidateSymbol
|
||||
} else {
|
||||
getSingleUnambiguousCandidate(namedReference)
|
||||
}
|
||||
}
|
||||
is FirErrorNamedReference -> getSingleUnambiguousCandidate(namedReference)
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user