[FIR] Split origin SubstitutionOverride into declaration and call-site

This commit is contained in:
Kirill Rakhman
2023-06-07 16:12:14 +02:00
committed by Space Team
parent 67fc46a190
commit bcdd85758e
12 changed files with 70 additions and 40 deletions
@@ -24,7 +24,7 @@ internal class JavaClassDeclaredMembersEnhancementScope(
) : FirContainingNamesAwareScope() {
private fun FirCallableDeclaration.isDeclared(): Boolean {
return (this.dispatchReceiverType as? ConeLookupTagBasedType)?.lookupTag == owner.symbol.toLookupTag()
&& this.origin != FirDeclarationOrigin.SubstitutionOverride
&& this.origin !is FirDeclarationOrigin.SubstitutionOverride
&& this.origin != FirDeclarationOrigin.IntersectionOverride
}
@@ -100,7 +100,7 @@ internal tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (ori
is FirDeclarationOrigin.Plugin -> KtSymbolOrigin.PLUGIN
FirDeclarationOrigin.RenamedForOverride -> KtSymbolOrigin.JAVA
FirDeclarationOrigin.SubstitutionOverride -> KtSymbolOrigin.SUBSTITUTION_OVERRIDE
is FirDeclarationOrigin.SubstitutionOverride -> KtSymbolOrigin.SUBSTITUTION_OVERRIDE
FirDeclarationOrigin.DynamicScope -> buildErrorWithAttachment("Invalid FirDeclarationOrigin ${origin::class.simpleName}") {
withFirEntry("firToGetOrigin", this@ktSymbolOrigin)
}
@@ -70,7 +70,7 @@ private fun collectDesignationPath(target: FirElementWithResolveState): List<Fir
val containingClassId = target.containingClassLookupTag()?.classId ?: return emptyList()
if (target.origin == FirDeclarationOrigin.SubstitutionOverride) {
if (target.origin is FirDeclarationOrigin.SubstitutionOverride) {
val originalContainingClassId = target.originalForSubstitutionOverride?.containingClassLookupTag()?.classId
if (containingClassId == originalContainingClassId) {
// Ugly temporary hack for call-site substitution overrides (KTIJ-24004).