Federico Tomassetti
03/31/2024, 11:07 AMprivate fun IrBuilderWithScope.dataType(pluginContext: IrPluginContext, irType: IrType): IrExpression {
...
val primitiveTypeClass = pluginContext.referenceClass(PrimitiveType::class.classId)!!
val primitiveTypeCompanionClass = (primitiveTypeClass.owner as IrClass).nestedClasses.find { it.isCompanion }!!
val primitiveTypeCompanionGet = primitiveTypeCompanionClass.functions.find { it.name.asString() == PrimitiveType.Companion::get.name }!!
primitiveTypeClass.owner.companionObject()
// FIXME I think I need somehow to indicate the PrimitiveType Companion Object
return irCall(primitiveTypeCompanionGet).apply {
// MAYBE SHOULD I SET THE DISPATCHER RECEIVER? HOW? TO WHICH VALUE?
// Pass the primitive type name
putValueArgument(0, irString(irType.classFqName!!.asString()))
}
}
}
Javier
03/31/2024, 1:04 PMfun box():String {
val isSame = whatever() == Foo2.some2()
return if (isSame) “Ok” else “Fail”
}
class Foo {
companion object {
some() = “some”
}
}
class Foo2 {
companion object {
some2() = “some”
}
}
Javier
03/31/2024, 1:05 PMwhatever()
should be Foo.some()
, you need to compare what you are building with the Foo2.some2()
you already have in the tree to extract it and see each value.Federico Tomassetti
04/01/2024, 8:45 AMirGetObject(CompanionClass)