[FIR2IR] Use deepest matching symbol on fake override calls
This commit is contained in:
@@ -108,9 +108,7 @@ fun FirReference.toSymbol(
|
||||
is FirResolvedNamedReference -> {
|
||||
when (val resolvedSymbol = resolvedSymbol) {
|
||||
is FirCallableSymbol<*> -> {
|
||||
val originalCallableSymbol =
|
||||
resolvedSymbol.overriddenSymbol?.takeIf { it.callableId == resolvedSymbol.callableId } ?: resolvedSymbol
|
||||
originalCallableSymbol.toSymbol(declarationStorage, preferGetter)
|
||||
resolvedSymbol.deepestMatchingOverriddenSymbol().toSymbol(declarationStorage, preferGetter)
|
||||
}
|
||||
is FirClassifierSymbol<*> -> {
|
||||
resolvedSymbol.toSymbol(session, classifierStorage)
|
||||
@@ -249,6 +247,11 @@ internal tailrec fun FirCallableSymbol<*>.deepestOverriddenSymbol(): FirCallable
|
||||
return overriddenSymbol.deepestOverriddenSymbol()
|
||||
}
|
||||
|
||||
internal tailrec fun FirCallableSymbol<*>.deepestMatchingOverriddenSymbol(root: FirCallableSymbol<*> = this): FirCallableSymbol<*> {
|
||||
val overriddenSymbol = overriddenSymbol?.takeIf { it.callableId == root.callableId } ?: return this
|
||||
return overriddenSymbol.deepestMatchingOverriddenSymbol(this)
|
||||
}
|
||||
|
||||
private val nameToOperationConventionOrigin = mutableMapOf(
|
||||
OperatorNameConventions.PLUS to IrStatementOrigin.PLUS,
|
||||
OperatorNameConventions.MINUS to IrStatementOrigin.MINUS,
|
||||
|
||||
Reference in New Issue
Block a user