I think that is not doable (at least with _untyped_ macros, but I am not an expert on how to use typed ones), because literals are just that in the macro scope, there's no type information tied to them yet.
As a matter of fact, you can see that nnkInt16Lit and nnkInt32Lit are the kinds you get when using the syntax I told you about earlier: import macros dumpTree: test( 1, 2'i16, 3'i32 ) Run yields: StmtList Call Ident "test" IntLit 1 Int16Lit 2 Int32Lit 3 Run