line 编译指示

line 编译指示可以修改所在语句的代码行信息。这个行信息可在栈回溯信息里看到:

  1. template myassert*(cond: untyped, msg = "") =
  2. if not cond:
  3. # 修改 `raise` 语句运行时的行信息
  4. {.line: instantiationInfo().}:
  5. raise newException(AssertionDefect, msg)

如果 line 带了参数,那么参数需要是 tuple[filename: string, line: int] 的形式; 如果不带参数,那么相当于以 system.instantiationInfo() 为参数。