Effects 编译指示

effects 编译指示用于协助程序员进行作用分析。这条语句可以使编译器输出直到 effects 处所有推断出的作用:

  1. proc p(what: bool) =
  2. if what:
  3. raise newException(IOError, "IO")
  4. {.effects.}
  5. else:
  6. raise newException(OSError, "OS")

编译器输出一条消息,提示可能抛出 IOError。OSError 不会出现在提示里,因为 effects 编译指示所在的分支不会抛出这个异常。