diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/DumpIrTreeWithDescriptorsVisitor.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/DumpIrTreeWithDescriptorsVisitor.kt index 0377548d1b6..767e36a1509 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/DumpIrTreeWithDescriptorsVisitor.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/DumpIrTreeWithDescriptorsVisitor.kt @@ -91,7 +91,7 @@ class RenderIrElementWithDescriptorsVisitor : IrElementVisitor "type=${expression.type.render()} origin=${expression.origin}" private fun IrCall.renderSuperQualifier(): String = - superQualifier?.let { "superQualifier=${it.name} " } ?: "" + superQualifierSymbol?.let { "superQualifier=${it.owner.name} " } ?: "" override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?): String = "DELEGATING_CONSTRUCTOR_CALL '${expression.descriptor}'" diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 0afcd10780b..881ae88e940 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -368,7 +368,7 @@ class ExpressionCodegen( } expression.dispatchReceiver?.let { receiver -> - val type = if ((expression as? IrCall)?.superQualifier != null) receiver.asmType else callable.owner + val type = if ((expression as? IrCall)?.superQualifierSymbol != null) receiver.asmType else callable.owner callGenerator.genValueAndPut(callee.dispatchReceiverParameter!!, receiver, type, this, data) } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt index 652a3183c98..4774d0d13be 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt @@ -306,7 +306,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext) { } val isInterface = calleeParent.isJvmInterface - val isSuperCall = (expression as? IrCall)?.superQualifier != null + val isSuperCall = (expression as? IrCall)?.superQualifierSymbol != null val invokeOpcode = when { callee.dispatchReceiverParameter == null -> Opcodes.INVOKESTATIC diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Clone.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Clone.kt index 5db8b1cde43..f05be8221b6 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Clone.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/intrinsics/Clone.kt @@ -27,7 +27,7 @@ object Clone : IntrinsicMethod() { override fun invoke(expression: IrFunctionAccessExpression, codegen: ExpressionCodegen, data: BlockInfo) = with(codegen) { val result = expression.dispatchReceiver!!.accept(this, data).materialized assert(!AsmUtil.isPrimitive(result.type)) { "clone() of primitive type" } - val opcode = if (expression is IrCall && expression.superQualifier != null) Opcodes.INVOKESPECIAL else Opcodes.INVOKEVIRTUAL + val opcode = if (expression is IrCall && expression.superQualifierSymbol != null) Opcodes.INVOKESPECIAL else Opcodes.INVOKEVIRTUAL mv.visitMethodInsn(opcode, "java/lang/Object", "clone", "()Ljava/lang/Object;", false) MaterialValue(codegen, AsmTypes.OBJECT_TYPE, context.irBuiltIns.anyNType) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt index a042b3dc0eb..9cace764aae 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt @@ -16,10 +16,8 @@ package org.jetbrains.kotlin.ir.expressions -import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.ir.symbols.IrClassSymbol interface IrCall : IrFunctionAccessExpression { - val superQualifier: ClassDescriptor? val superQualifierSymbol: IrClassSymbol? } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt index a8ddb783a8d..79a49b5b8e7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt @@ -79,12 +79,6 @@ class IrCallImpl( descriptor.valueParameters.size, origin, superQualifierSymbol ) - constructor(startOffset: Int, endOffset: Int, type: IrType, symbol: IrFunctionSymbol, superQualifierSymbol : IrClassSymbol? = null) : - this(startOffset, endOffset, type, symbol, symbol.descriptor, superQualifierSymbol = superQualifierSymbol) - - - override val superQualifier: ClassDescriptor? = superQualifierSymbol?.descriptor - override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitCall(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 0be4bc268a3..e7ab6c29005 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -377,7 +377,7 @@ fun IrFunction.isFakeOverriddenFromAny(): Boolean { return (this as IrSimpleFunction).overriddenSymbols.all { it.owner.isFakeOverriddenFromAny() } } -fun IrCall.isSuperToAny() = superQualifier?.let { this.symbol.owner.isFakeOverriddenFromAny() } ?: false +fun IrCall.isSuperToAny() = superQualifierSymbol?.let { this.symbol.owner.isFakeOverriddenFromAny() } ?: false fun IrDeclaration.isEffectivelyExternal(): Boolean {