[Analysis API FIR] KtSymbolByFirBuilder: simplify call-site substitution override unwrap logic
Not we have separate SubstitutionOverride for declaration and call site, so this logic can be simplified a lot
This commit is contained in:
committed by
Space Team
parent
b7d56dea44
commit
fab51ff83c
+1
-14
@@ -542,20 +542,7 @@ internal class KtSymbolByFirBuilder(
|
|||||||
*/
|
*/
|
||||||
private inline fun <reified T : FirCallableDeclaration> T.unwrapUseSiteSubstitutionOverride(): T? {
|
private inline fun <reified T : FirCallableDeclaration> T.unwrapUseSiteSubstitutionOverride(): T? {
|
||||||
val originalDeclaration = originalForSubstitutionOverride ?: return null
|
val originalDeclaration = originalForSubstitutionOverride ?: return null
|
||||||
|
return originalDeclaration.takeIf { this.origin is FirDeclarationOrigin.SubstitutionOverride.CallSite }
|
||||||
val containingClass = getContainingMemberOrSelf().getContainingClass(rootSession) ?: return null
|
|
||||||
val originalContainingClass = originalDeclaration.getContainingMemberOrSelf().getContainingClass(rootSession) ?: return null
|
|
||||||
|
|
||||||
// If substitution override does not change the containing class of the FIR declaration,
|
|
||||||
// it is a use-site substitution override
|
|
||||||
if (containingClass != originalContainingClass) return null
|
|
||||||
|
|
||||||
return originalDeclaration
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun FirCallableDeclaration.getContainingMemberOrSelf(): FirCallableDeclaration = when (this) {
|
|
||||||
is FirValueParameter -> containingFunctionSymbol.fir
|
|
||||||
else -> this
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user