JVM IR: Add Object.clone to JvmSymbols
The `clone` function is not available in the builtin classes created from fir.
This commit is contained in:
committed by
Alexander Udalov
parent
99a4779c6b
commit
bf2942b5cc
@@ -850,6 +850,14 @@ class JvmSymbols(
|
||||
val enumValueOfFunction: IrSimpleFunctionSymbol =
|
||||
javaLangEnum.functionByName("valueOf")
|
||||
|
||||
private val javaLangObject: IrClassSymbol =
|
||||
createClass(FqName("java.lang.Object")) { klass ->
|
||||
klass.addFunction("clone", irBuiltIns.anyType)
|
||||
}
|
||||
|
||||
val objectCloneFunction: IrSimpleFunctionSymbol =
|
||||
javaLangObject.functionByName("clone")
|
||||
|
||||
private val kotlinCoroutinesJvmInternalRunSuspendKt =
|
||||
createClass(FqName("kotlin.coroutines.jvm.internal.RunSuspendKt")) { klass ->
|
||||
klass.addFunction("runSuspend", irBuiltIns.unitType, isStatic = true).apply {
|
||||
|
||||
+1
-4
@@ -154,10 +154,7 @@ private class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringP
|
||||
irExprBody(
|
||||
when (body.kind) {
|
||||
IrSyntheticBodyKind.ENUM_VALUES -> {
|
||||
val cloneFun = context.irBuiltIns.arrayClass.functions.single {
|
||||
it.owner.name.asString() == "clone"
|
||||
}
|
||||
irCall(cloneFun, declaration.returnType).apply {
|
||||
irCall(this@EnumClassLowering.context.ir.symbols.objectCloneFunction, declaration.returnType).apply {
|
||||
dispatchReceiver = irGetField(null, valuesField)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user