IR BE common: IrSimpleFunction.isFakeOverride
This commit is contained in:
@@ -485,7 +485,8 @@ fun IrClass.addFakeOverrides() {
|
|||||||
isExternal = irFunction.isExternal,
|
isExternal = irFunction.isExternal,
|
||||||
isTailrec = irFunction.isTailrec,
|
isTailrec = irFunction.isTailrec,
|
||||||
isSuspend = irFunction.isSuspend,
|
isSuspend = irFunction.isSuspend,
|
||||||
isExpect = irFunction.isExpect
|
isExpect = irFunction.isExpect,
|
||||||
|
isFakeOverride = true
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
parent = this@addFakeOverrides
|
parent = this@addFakeOverrides
|
||||||
@@ -526,7 +527,8 @@ fun createStaticFunctionWithReceivers(
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = oldFunction.isSuspend,
|
isSuspend = oldFunction.isSuspend,
|
||||||
isExpect = oldFunction.isExpect
|
isExpect = oldFunction.isExpect,
|
||||||
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
parent = irParent
|
parent = irParent
|
||||||
|
|||||||
+6
-3
@@ -488,7 +488,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = false,
|
isSuspend = false,
|
||||||
isExpect = false
|
isExpect = false,
|
||||||
|
isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
@@ -554,7 +555,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = true,
|
isSuspend = true,
|
||||||
isExpect = false
|
isExpect = false,
|
||||||
|
isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
@@ -612,7 +614,8 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
isExternal = stateMachineFunction.isExternal,
|
isExternal = stateMachineFunction.isExternal,
|
||||||
isTailrec = stateMachineFunction.isTailrec,
|
isTailrec = stateMachineFunction.isTailrec,
|
||||||
isSuspend = stateMachineFunction.isSuspend,
|
isSuspend = stateMachineFunction.isSuspend,
|
||||||
isExpect = stateMachineFunction.isExpect
|
isExpect = stateMachineFunction.isExpect,
|
||||||
|
isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = coroutineClass
|
parent = coroutineClass
|
||||||
|
|||||||
+2
-1
@@ -523,7 +523,8 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = irFunction.isSuspend,
|
isSuspend = irFunction.isSuspend,
|
||||||
isExpect = irFunction.isExpect
|
isExpect = irFunction.isExpect,
|
||||||
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
).also {
|
).also {
|
||||||
descriptor.bind(it)
|
descriptor.bind(it)
|
||||||
it.parent = irFunction.parent
|
it.parent = irFunction.parent
|
||||||
|
|||||||
+7
-6
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.backend.common.lower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||||
import org.jetbrains.kotlin.backend.common.deepCopyWithWrappedDescriptors
|
|
||||||
import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor
|
import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDescriptor
|
||||||
import org.jetbrains.kotlin.backend.common.ir.SetDeclarationsParentVisitor
|
import org.jetbrains.kotlin.backend.common.ir.SetDeclarationsParentVisitor
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
@@ -18,16 +17,17 @@ import org.jetbrains.kotlin.ir.IrStatement
|
|||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.IrBlock
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
||||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
|
||||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||||
|
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||||
import org.jetbrains.kotlin.ir.visitors.*
|
import org.jetbrains.kotlin.ir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -149,7 +149,8 @@ class InitializersLowering(
|
|||||||
isExternal = false,
|
isExternal = false,
|
||||||
isTailrec = false,
|
isTailrec = false,
|
||||||
isSuspend = false,
|
isSuspend = false,
|
||||||
isExpect = false
|
isExpect = false,
|
||||||
|
isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
staticInitializerDescriptor.bind(this)
|
staticInitializerDescriptor.bind(this)
|
||||||
body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset,
|
body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset,
|
||||||
|
|||||||
+2
-1
@@ -522,7 +522,8 @@ class LocalDeclarationsLowering(
|
|||||||
isExternal = oldDeclaration.isExternal,
|
isExternal = oldDeclaration.isExternal,
|
||||||
isTailrec = oldDeclaration.isTailrec,
|
isTailrec = oldDeclaration.isTailrec,
|
||||||
isSuspend = oldDeclaration.isSuspend,
|
isSuspend = oldDeclaration.isSuspend,
|
||||||
isExpect = oldDeclaration.isExpect
|
isExpect = oldDeclaration.isExpect,
|
||||||
|
isFakeOverride = oldDeclaration.isFakeOverride
|
||||||
)
|
)
|
||||||
newDescriptor.bind(newDeclaration)
|
newDescriptor.bind(newDeclaration)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ class PropertiesLowering(
|
|||||||
return IrFunctionImpl(
|
return IrFunctionImpl(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name),
|
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name),
|
||||||
declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType,
|
declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType,
|
||||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false
|
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false, isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -123,7 +123,8 @@ fun IrFunctionBuilder.buildFun(originalDescriptor: FunctionDescriptor? = null):
|
|||||||
startOffset, endOffset, origin,
|
startOffset, endOffset, origin,
|
||||||
IrSimpleFunctionSymbolImpl(wrappedDescriptor),
|
IrSimpleFunctionSymbolImpl(wrappedDescriptor),
|
||||||
name, visibility, modality, returnType,
|
name, visibility, modality, returnType,
|
||||||
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect
|
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect,
|
||||||
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
).also {
|
).also {
|
||||||
wrappedDescriptor.bind(it)
|
wrappedDescriptor.bind(it)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user