如何创建一个nnkUInt16Lit NimNode

时间:2015-05-18 19:12:17

标签: macros nim

除了描述nnkUInt16Lit枚举变体和此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(),但似乎$上的int proc在编译时不起作用。

我已经尝试查找NimNode类型定义的源代码来检查它,但到目前为止无法找到它。

那么如何在宏中创建uint16 NimNode?

1 个答案:

答案 0 :(得分:4)

这应该有效:

var n = parseExpr "1'u16"

通过此拉取请求,您的原始代码也可以正常运行:https://github.com/nim-lang/Nim/pull/2754

相关问题