FIR: Cache ConeClassifierSymbol in ConeClassLikeLookupTagImpl
This commit is contained in:
committed by
Mikhail Glukhikh
parent
91d8f1fc88
commit
373283dcae
@@ -21,7 +21,15 @@ interface FirSymbolProvider {
|
||||
|
||||
fun getSymbolByLookupTag(lookupTag: ConeClassifierLookupTag): ConeClassifierSymbol? {
|
||||
return when (lookupTag) {
|
||||
is ConeClassLikeLookupTag -> getClassLikeSymbolByFqName(lookupTag.classId)
|
||||
is ConeClassLikeLookupTag -> {
|
||||
(lookupTag as? ConeClassLikeLookupTagImpl)
|
||||
?.boundSymbol?.takeIf { it.first === this }?.let { return it.second as ConeClassifierSymbol? }
|
||||
|
||||
getClassLikeSymbolByFqName(lookupTag.classId).also {
|
||||
(lookupTag as? ConeClassLikeLookupTagImpl)
|
||||
?.boundSymbol = Pair(this, it)
|
||||
}
|
||||
}
|
||||
is ConeClassifierLookupTagWithFixedSymbol -> lookupTag.symbol
|
||||
else -> error("Unknown lookupTag type: ${lookupTag::class}")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user