I really like that macro, because it is a nice example for explaining the power
of Nim macros to new users. It is not too complicated, and it is easy to
understand the usecase.
But note that using int32 data type is not that hard without it, if really
desired: At most 3 locations would need a fix:
proc doit =
var a = [3i32, 3, 6]
for i in 0.int32 ..< 3:
echo a[i]
doAssert i is int32
doAssert a[i] is int32
for i in low(a).int32 .. high(a):
echo a[i]
doAssert i is int32
doAssert a[i] is int32
doit()
Run