How can I get generic parameters of ref object in this example?
import macros
type A[T] = object
x: T
type B[T] = ref object
x: T
macro genConstructor(`type`: typed): untyped =
let t = `type`.getType[1]
if t.typeKind == ntyGenericBody:
echo treeRepr(t.symbol.getImpl[1])
elif t.typeKind == ntyRef:
echo "Where is generic parameters???"
result = newEmptyNode()
genConstructor A
genConstructor B
The output:
GenericParams
Sym "T"
Where is generic parameters???
The desired output:
GenericParams
Sym "T"
GenericParams
Sym "T"
import macros
type A[T] = object
x: T
type B[T] = ref object
x: T
macro genConstructor(typ: typed): untyped =
echo typ.getTypeInst[1].symbol.getImpl[1].treeRepr
genConstructor A
genConstructor B