OCaml自定义编译器警告

时间:2014-05-12 15:07:13

标签: ocaml compiler-warnings

编译时是否可以使ocamlc生成自定义警告?我有一些半完成的代码,我想提醒它还没有完成。举个例子:我想写一个reverse函数。我现在无法解决如何编写代码的问题,所以我只想写一些类型检查。

let reverse xs = xs

我想写点像

let reverse xs = Compiler_Warning "TODO: reverse"; xs

这可能吗?我有兴趣听到任何获得类似结果的技巧。

3 个答案:

答案 0 :(得分:3)

常见的诀窍是使用failwith "not implemented"assert false引发异常。

如果未实现的功能中有未使用的参数,则会发出警告。虽然,默认情况下它们是禁用的。所以你需要添加-Wall选项来启用它们。

此外,您只需在实现中添加一个有意使用的变量,例如:

let reverse xs =
  let unimplemented = () in 
  xs

答案 1 :(得分:1)

您可能对cppo pre-processor感兴趣,{{3}}将自己描述为OCaml程序的cpp等效项,并具有#warning指令。它似乎可以通过opam获得。

答案 2 :(得分:1)

您可以使用扩展点执行此操作,目前该计划以类似的方式提交到annotate deprecated functions。正如ivg所提到的,failwith "TODO"是你想要的标准,但你不会得到编译时警告 - 尽管你可能会在函数中为每个参数获得未使用的参数警告。