FIR2IR: Use IrDeclarationOrigin.FAKE_OVERRIDE for non-source classes
This commit is contained in:
+4
-7
@@ -1019,7 +1019,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
getCachedIrFunction(fir)?.let { return it.symbol }
|
getCachedIrFunction(fir)?.let { return it.symbol }
|
||||||
val irParent = findIrParent(fir)
|
val irParent = findIrParent(fir)
|
||||||
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
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
|
createIrFunction(fir, irParent, origin = declarationOrigin).symbol
|
||||||
}
|
}
|
||||||
is FirSimpleFunction -> {
|
is FirSimpleFunction -> {
|
||||||
@@ -1106,7 +1106,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
signature
|
signature
|
||||||
}?.let { return it.symbol }
|
}?.let { return it.symbol }
|
||||||
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
||||||
val declarationOrigin = computeDeclarationOrigin(firSymbol, parentOrigin, irParent)
|
val declarationOrigin = computeDeclarationOrigin(firSymbol, parentOrigin)
|
||||||
// TODO: package fragment members (?)
|
// TODO: package fragment members (?)
|
||||||
val parent = irParent
|
val parent = irParent
|
||||||
if (parent is Fir2IrLazyClass) {
|
if (parent is Fir2IrLazyClass) {
|
||||||
@@ -1124,17 +1124,14 @@ class Fir2IrDeclarationStorage(
|
|||||||
|
|
||||||
private fun computeDeclarationOrigin(
|
private fun computeDeclarationOrigin(
|
||||||
symbol: FirCallableSymbol<*>,
|
symbol: FirCallableSymbol<*>,
|
||||||
parentOrigin: IrDeclarationOrigin,
|
parentOrigin: IrDeclarationOrigin
|
||||||
irParent: IrDeclarationParent?
|
|
||||||
): IrDeclarationOrigin {
|
): IrDeclarationOrigin {
|
||||||
return if (irParent.isSourceClass() && (symbol.fir.isIntersectionOverride || symbol.fir.isSubstitutionOverride))
|
return if (symbol.fir.isIntersectionOverride || symbol.fir.isSubstitutionOverride)
|
||||||
IrDeclarationOrigin.FAKE_OVERRIDE
|
IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
else
|
else
|
||||||
parentOrigin
|
parentOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrDeclarationParent?.isSourceClass() = this is IrClass && this !is Fir2IrLazyClass && this !is IrLazyClass
|
|
||||||
|
|
||||||
fun getIrFieldSymbol(firFieldSymbol: FirFieldSymbol): IrSymbol {
|
fun getIrFieldSymbol(firFieldSymbol: FirFieldSymbol): IrSymbol {
|
||||||
val fir = firFieldSymbol.fir
|
val fir = firFieldSymbol.fir
|
||||||
val irProperty = fieldCache[fir] ?: run {
|
val irProperty = fieldCache[fir] ?: run {
|
||||||
|
|||||||
Reference in New Issue
Block a user