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 aa8ed4a31af..dbd727484c1 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 @@ -25,6 +25,8 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* +import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrTypeParameterSymbolImpl @@ -587,3 +589,6 @@ fun copyBodyToStatic(oldFunction: IrFunction, staticFunction: IrFunction) { }, null) ?.patchDeclarationParents(staticFunction) } + +val IrSymbol.isSuspend: Boolean + get() = this is IrSimpleFunctionSymbol && owner.isSuspend \ No newline at end of file diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt index 9dcf225a5d6..26e9a06cd59 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/jsAstUtils.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs -import org.jetbrains.kotlin.backend.common.descriptors.isSuspend import org.jetbrains.kotlin.backend.common.ir.isElseBranch +import org.jetbrains.kotlin.backend.common.ir.isSuspend import org.jetbrains.kotlin.ir.backend.js.utils.* import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction @@ -212,7 +212,7 @@ fun translateCallArguments(expression: IrMemberAccessExpression, context: JsGene result } - return if (expression.descriptor.isSuspend) { + return if (expression.symbol.isSuspend) { arguments + context.continuation } else arguments } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt index 221406d1d82..32608e1c422 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt @@ -16,14 +16,12 @@ package org.jetbrains.kotlin.ir.expressions -import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors import org.jetbrains.kotlin.ir.symbols.* -interface IrCallableReference : IrMemberAccessExpression, IrDeclarationReference { - override val descriptor: CallableDescriptor +interface IrCallableReference : IrMemberAccessExpression { } interface IrFunctionReference : IrCallableReference { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt index 0c0d6fefacc..33e02d97f19 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt @@ -10,18 +10,18 @@ import org.jetbrains.kotlin.ir.declarations.IrTypeParameter import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.defaultType -import org.jetbrains.kotlin.ir.types.toKotlinType -import org.jetbrains.kotlin.ir.util.dump -import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.types.KotlinType -interface IrMemberAccessExpression : IrExpression { +interface IrMemberAccessExpression : IrExpression, IrDeclarationReference { var dispatchReceiver: IrExpression? var extensionReceiver: IrExpression? - val descriptor: CallableDescriptor + override val descriptor: CallableDescriptor + override val symbol: IrSymbol + val origin: IrStatementOrigin? val typeArgumentsCount: Int @@ -66,7 +66,7 @@ val CallableDescriptor.typeParametersCount: Int fun IrMemberAccessExpression.getTypeArgumentOrDefault(irTypeParameter: IrTypeParameter) = getTypeArgument(irTypeParameter.index) ?: irTypeParameter.defaultType -interface IrFunctionAccessExpression : IrMemberAccessExpression, IrDeclarationReference { +interface IrFunctionAccessExpression : IrMemberAccessExpression { override val descriptor: FunctionDescriptor override val symbol: IrFunctionSymbol }