除了描述nnkUInt16Lit
enum 变体和这个 AST 表示之外,没有关于此的文档42'i16 - nnkInt16Lit(intVal = 42)
。
当我像常规一样使用它时,nnkIntLit
它会失败。
macro test(): stmt =
var n = newNimNode(nnkUInt16Lit)
n.intVal = 1
result = newLetStmt(ident("foo"), n)
test()
echo foo
这给出了一个错误:
intVal
找不到字段
(这不是我的实际用法。这只是一个演示问题。)
我尝试了不同的变体intVal
,但错误总是变成undeclared identifier
. 我会使用parseExpr()
,但似乎$
an 上的 procint
在编译时不起作用。
我试图寻找NimNode
类型定义的源代码来检查它,但到目前为止我找不到它。
那么如何uint16
在宏中创建 NimNode?