自定义语义检查

宏对实参做的第一件事是检查实参是否是正确的形式。不是每种类型的错误输入都需要在这里捕获,但是应该捕获在宏求值期间可能导致崩溃的任何内容并创建一个很好的错误消息。 macros.expectKindmacros.expectLen 是一个好的开始。如果检查需要更加复杂,任意错误消息可以用 macros.error 过程创建。

  1. macro myAssert(arg: untyped): untyped =
  2. arg.expectKind nnkInfix