FIR2IR: Refine definition if we need a fake override
`realDeclarationSymbols` that was used before is built from klass.declarations that doesn't contain e.g. declarations from enhancement Next time, we should get rid of `realDeclarationSymbols` and use only originalDeclaration.origin.fromSupertypes, but originalSymbol.callableId.classId == classId doesn't work correctly
This commit is contained in:
+4
-2
@@ -143,11 +143,13 @@ class FakeOverrideGenerator(
|
||||
scope: FirTypeScope,
|
||||
) where S : FirCallableSymbol<D>, S : PossiblyFirFakeOverrideSymbol<D, S> {
|
||||
if (originalSymbol !is S || originalSymbol in realDeclarationSymbols) return
|
||||
|
||||
val classId = klass.symbol.classId
|
||||
val originalDeclaration = originalSymbol.fir
|
||||
if (originalSymbol.callableId.classId == classId && !originalDeclaration.origin.fromSupertypes) return
|
||||
|
||||
val origin = IrDeclarationOrigin.FAKE_OVERRIDE
|
||||
val baseSymbol = originalSymbol.deepestOverriddenSymbol() as S
|
||||
val classId = klass.symbol.classId
|
||||
|
||||
if ((originalSymbol.isFakeOverride || originalSymbol.isIntersectionOverride) &&
|
||||
originalSymbol.callableId.classId == classId
|
||||
) {
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
sealed class FirDeclarationOrigin {
|
||||
sealed class FirDeclarationOrigin(val fromSupertypes: Boolean = false) {
|
||||
object Source : FirDeclarationOrigin()
|
||||
object Library : FirDeclarationOrigin()
|
||||
object Java : FirDeclarationOrigin()
|
||||
object Synthetic : FirDeclarationOrigin()
|
||||
object SamConstructor : FirDeclarationOrigin()
|
||||
object FakeOverride : FirDeclarationOrigin()
|
||||
object FakeOverride : FirDeclarationOrigin(fromSupertypes = true)
|
||||
object Enhancement : FirDeclarationOrigin()
|
||||
object ImportedFromObject : FirDeclarationOrigin()
|
||||
object IntersectionOverride : FirDeclarationOrigin()
|
||||
object IntersectionOverride : FirDeclarationOrigin(fromSupertypes = true)
|
||||
object Delegated : FirDeclarationOrigin()
|
||||
|
||||
class Plugin(val key: FirPluginKey) : FirDeclarationOrigin()
|
||||
}
|
||||
|
||||
abstract class FirPluginKey
|
||||
abstract class FirPluginKey
|
||||
|
||||
Reference in New Issue
Block a user