[IR] Remove superQualifier property from IrCall
This commit is contained in:
+1
-1
@@ -91,7 +91,7 @@ class RenderIrElementWithDescriptorsVisitor : IrElementVisitor<String, Nothing?>
|
||||
"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}'"
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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?
|
||||
}
|
||||
|
||||
@@ -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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitCall(this, data)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user