Slide 47
Slide 47 text
[IrFunction] name: toString, type: kotlin.String
[IrForLoop] target: MyData#valueParameters, name: param
[IrVariable] name: result, type: kotlin.String
[IrCall]
symbol: kotlin.String.plusAssign
value argument: IrConst(value: “MyData(“)
dispatch receiver: result
[IrCall]
symbol: kotlin.String.plusAssign
value argument: IrConst(value: “)“)
dispatch receiver: result
[IrReturn] target: result
[IrCall]
symbol: kotlin.String.plusAssign
value argument: IrConst(
value: “${param.name}=${param.value}, “
)
dispatch receiver: result
fun
val
buildDataClassToStringReturn(
clazz: IrClass,
parameters: List,
) {
result = IrVariable( , )
}
name = type =
"result" "kotlin.String"
IrCall.fromSymbol("kotlin.String.plusAssign")
.addValueArgument(IrConst(clazz.name + "("))
.dispatchReceiver(result)
IrForLoop(target = parameters, name = "param")
.addBodyStatement(
IrCall.fromSymbol("kotlin.String.plusAssign")
.addValueArgument(IrConst("\${param.name}=\${param.value}, "))
.dispatchReceiver(result)
)
IrCall.fromSymbol("kotlin.String.plusAssign")
.addValueArgument(IrConst(")"))
.dispatchReceiver(result)
IrReturn(result)