From a883833941a4e804372f1bb2a843330b852febfc Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 17 Feb 2021 19:02:15 +0300 Subject: [PATCH] FIR2IR: Use IrDeclarationOrigin.FAKE_OVERRIDE for non-source classes --- .../kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 13f55300f78..ce237866e02 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -1019,7 +1019,7 @@ class Fir2IrDeclarationStorage( getCachedIrFunction(fir)?.let { return it.symbol } val irParent = findIrParent(fir) val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED - val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin, irParent) + val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin) createIrFunction(fir, irParent, origin = declarationOrigin).symbol } is FirSimpleFunction -> { @@ -1106,7 +1106,7 @@ class Fir2IrDeclarationStorage( signature }?.let { return it.symbol } val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED - val declarationOrigin = computeDeclarationOrigin(firSymbol, parentOrigin, irParent) + val declarationOrigin = computeDeclarationOrigin(firSymbol, parentOrigin) // TODO: package fragment members (?) val parent = irParent if (parent is Fir2IrLazyClass) { @@ -1124,17 +1124,14 @@ class Fir2IrDeclarationStorage( private fun computeDeclarationOrigin( symbol: FirCallableSymbol<*>, - parentOrigin: IrDeclarationOrigin, - irParent: IrDeclarationParent? + parentOrigin: IrDeclarationOrigin ): IrDeclarationOrigin { - return if (irParent.isSourceClass() && (symbol.fir.isIntersectionOverride || symbol.fir.isSubstitutionOverride)) + return if (symbol.fir.isIntersectionOverride || symbol.fir.isSubstitutionOverride) IrDeclarationOrigin.FAKE_OVERRIDE else parentOrigin } - private fun IrDeclarationParent?.isSourceClass() = this is IrClass && this !is Fir2IrLazyClass && this !is IrLazyClass - fun getIrFieldSymbol(firFieldSymbol: FirFieldSymbol): IrSymbol { val fir = firFieldSymbol.fir val irProperty = fieldCache[fir] ?: run {