From 0681c0d9562d9e13112e0ebd25cb0b1979db5b05 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 26 Nov 2019 16:49:27 +0300 Subject: [PATCH] IR BE Common: IrSimpleFunction.isOperator --- .../kotlin/backend/common/ir/IrUtils.kt | 6 ++++-- .../lower/AbstractSuspendFunctionsLowering.kt | 16 +++++++++------- .../common/lower/LocalDeclarationsLowering.kt | 3 ++- .../backend/common/lower/PropertiesLowering.kt | 3 ++- .../builders/declarations/declarationBuilders.kt | 3 ++- 5 files changed, 19 insertions(+), 12 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 1604272804c..ef50e6cdd78 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 @@ -486,7 +486,8 @@ fun IrClass.addFakeOverrides() { isTailrec = irFunction.isTailrec, isSuspend = irFunction.isSuspend, isExpect = irFunction.isExpect, - isFakeOverride = true + isFakeOverride = true, + isOperator = irFunction.isOperator ).apply { descriptor.bind(this) parent = this@addFakeOverrides @@ -528,7 +529,8 @@ fun createStaticFunctionWithReceivers( isTailrec = false, isSuspend = oldFunction.isSuspend, isExpect = oldFunction.isExpect, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, + isOperator = oldFunction is IrSimpleFunction && oldFunction.isOperator ).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 113f4ec81ac..8d78ecdf4a8 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 @@ -57,7 +57,8 @@ abstract class AbstractSuspendFunctionsLowering(val co protected abstract fun initializeStateMachine(coroutineConstructors: List, coroutineClassThis: IrValueDeclaration) - protected open fun IrBuilderWithScope.generateDelegatedCall(expectedType: IrType, delegatingCall: IrExpression): IrExpression = delegatingCall + protected open fun IrBuilderWithScope.generateDelegatedCall(expectedType: IrType, delegatingCall: IrExpression): IrExpression = + delegatingCall private val builtCoroutines = mutableMapOf() private val suspendLambdas = mutableMapOf() @@ -308,9 +309,7 @@ abstract class AbstractSuspendFunctionsLowering(val co private val continuationType = continuationClassSymbol.typeWith(irFunction.returnType) // Save all arguments to fields. - private val argumentToPropertiesMap = functionParameters.associate { - it to coroutineClass.addField(it.name, it.type, false) - } + private val argumentToPropertiesMap = functionParameters.associateWith { coroutineClass.addField(it.name, it.type, false) } private val coroutineBaseClass = getCoroutineBaseClass(irFunction) private val coroutineBaseClassConstructor = coroutineBaseClass.owner.constructors.single { it.valueParameters.size == 1 } @@ -491,7 +490,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isTailrec = false, isSuspend = false, isExpect = false, - isFakeOverride = false + isFakeOverride = false, + isOperator = false ).apply { d.bind(this) parent = coroutineClass @@ -558,7 +558,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isTailrec = false, isSuspend = true, isExpect = false, - isFakeOverride = false + isFakeOverride = false, + isOperator = false ).apply { d.bind(this) parent = coroutineClass @@ -617,7 +618,8 @@ abstract class AbstractSuspendFunctionsLowering(val co isTailrec = stateMachineFunction.isTailrec, isSuspend = stateMachineFunction.isSuspend, isExpect = stateMachineFunction.isExpect, - isFakeOverride = false + isFakeOverride = false, + isOperator = false ).apply { d.bind(this) parent = coroutineClass 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 59c0d4f4b49..aeefb9cd138 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 @@ -527,7 +527,8 @@ class LocalDeclarationsLowering( isTailrec = oldDeclaration.isTailrec, isSuspend = oldDeclaration.isSuspend, isExpect = oldDeclaration.isExpect, - isFakeOverride = oldDeclaration.isFakeOverride + isFakeOverride = oldDeclaration.isFakeOverride, + isOperator = oldDeclaration.isOperator ) 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 641be162b92..38db4d5c52b 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,8 @@ 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, isFakeOverride = false + isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isExpect = false, isFakeOverride = false, + isOperator = 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 477d74c5cc7..43917ad4e99 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 @@ -128,7 +128,8 @@ fun IrFunctionBuilder.buildFun(originalDescriptor: FunctionDescriptor? = null): IrSimpleFunctionSymbolImpl(wrappedDescriptor), name, visibility, modality, returnType, isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, + isOperator = isOperator ).also { wrappedDescriptor.bind(it) }