From b36d8f556a4882c952d6253dee8bf3e9cadb0492 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 22 Oct 2019 16:22:54 +0300 Subject: [PATCH] IR BE common: IrSimpleFunction.isFakeOverride --- .../jetbrains/kotlin/backend/common/ir/IrUtils.kt | 6 ++++-- .../lower/AbstractSuspendFunctionsLowering.kt | 9 ++++++--- .../common/lower/DefaultArgumentStubGenerator.kt | 3 ++- .../backend/common/lower/InitializersLowering.kt | 13 +++++++------ .../common/lower/LocalDeclarationsLowering.kt | 3 ++- .../backend/common/lower/PropertiesLowering.kt | 2 +- .../ir/builders/declarations/declarationBuilders.kt | 3 ++- 7 files changed, 24 insertions(+), 15 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index de672bccc20..aa8ed4a31af 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -485,7 +485,8 @@ fun IrClass.addFakeOverrides() { isExternal = irFunction.isExternal, isTailrec = irFunction.isTailrec, isSuspend = irFunction.isSuspend, - isExpect = irFunction.isExpect + isExpect = irFunction.isExpect, + isFakeOverride = true ).apply { descriptor.bind(this) parent = this@addFakeOverrides @@ -526,7 +527,8 @@ fun createStaticFunctionWithReceivers( isExternal = false, isTailrec = false, isSuspend = oldFunction.isSuspend, - isExpect = oldFunction.isExpect + isExpect = oldFunction.isExpect, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).apply { descriptor.bind(this) parent = irParent diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt index 6d5cf6c751f..8c7eec96ef8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt @@ -488,7 +488,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isExternal = false, isTailrec = false, isSuspend = false, - isExpect = false + isExpect = false, + isFakeOverride = false ).apply { d.bind(this) parent = coroutineClass @@ -554,7 +555,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isExternal = false, isTailrec = false, isSuspend = true, - isExpect = false + isExpect = false, + isFakeOverride = false ).apply { d.bind(this) parent = coroutineClass @@ -612,7 +614,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isExternal = stateMachineFunction.isExternal, isTailrec = stateMachineFunction.isTailrec, isSuspend = stateMachineFunction.isSuspend, - isExpect = stateMachineFunction.isExpect + isExpect = stateMachineFunction.isExpect, + isFakeOverride = false ).apply { d.bind(this) parent = coroutineClass diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt index 719d3a4fff4..1fac3767596 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt @@ -523,7 +523,8 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati isExternal = false, isTailrec = false, isSuspend = irFunction.isSuspend, - isExpect = irFunction.isExpect + isExpect = irFunction.isExpect, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).also { descriptor.bind(it) it.parent = irFunction.parent diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt index 69979fedd2f..22379b54a08 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InitializersLowering.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.backend.common.ClassLoweringPass 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.ir.SetDeclarationsParentVisitor 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.declarations.* 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.IrBlockImpl import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl 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.util.deepCopyWithSymbols +import org.jetbrains.kotlin.ir.util.patchDeclarationParents import org.jetbrains.kotlin.ir.visitors.* import org.jetbrains.kotlin.name.Name @@ -149,7 +149,8 @@ class InitializersLowering( isExternal = false, isTailrec = false, isSuspend = false, - isExpect = false + isExpect = false, + isFakeOverride = false ).apply { staticInitializerDescriptor.bind(this) body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset, diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index 711687101b2..7cacf001569 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -522,7 +522,8 @@ class LocalDeclarationsLowering( isExternal = oldDeclaration.isExternal, isTailrec = oldDeclaration.isTailrec, isSuspend = oldDeclaration.isSuspend, - isExpect = oldDeclaration.isExpect + isExpect = oldDeclaration.isExpect, + isFakeOverride = oldDeclaration.isFakeOverride ) newDescriptor.bind(newDeclaration) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt index b37ca138cc4..d62b652588f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt @@ -85,7 +85,7 @@ class PropertiesLowering( return IrFunctionImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name), 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 { descriptor.bind(this) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt index d17807a264a..c8ade67c11f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt @@ -123,7 +123,8 @@ fun IrFunctionBuilder.buildFun(originalDescriptor: FunctionDescriptor? = null): startOffset, endOffset, origin, IrSimpleFunctionSymbolImpl(wrappedDescriptor), 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 { wrappedDescriptor.bind(it) }