删除特定出现的“警告:未使用的值声明”

ano*_*nol 5 ocaml

我正在尝试使用警告装饰器 ( [@*ocaml.warning]) 在本地删除有关特定未使用函数的警告,但我找不到正确的语法(如果有的话)。我正在使用 OCaml 4.02.1。

在下面的代码中,我有一个dbg未导出且从未使用过的函数,但我想将警告 32 ( unused value dbg)静音。

我想在代码的其他地方保持激活警告,以避免意外错误。

我尝试在函数周围放置各种装饰器,但仍然出现警告:

A.mli:

val f : unit -> unit
Run Code Online (Sandbox Code Playgroud)

毫升:

let f () = ()

[@@ocaml.warning "-32"]
let dbg () = () [@ocaml.warning "-32"]
[@@ocaml.warning "-32"]

let bla () = ()
Run Code Online (Sandbox Code Playgroud)

ocamlc -w +a a.mli a.ml 结果是:

File "a.ml", line 4, characters 4-7:
Warning 32: unused value dbg.
File "a.ml", line 7, characters 4-7:
Warning 32: unused value bla.
Run Code Online (Sandbox Code Playgroud)

请注意,[@@@ocaml.warning "-32"]let dbg工作之前添加(它删除了警告),但是我必须在[@@@ocaml.warning "+32"]之后添加以重新启用它,这并不理想,因为即使警告一开始不存在,它也会启用警告。

例如,如果我然后用 编译ocamlc a.mli a.ml,这会添加一个不需要的警告。

有没有办法在本地禁用警告 32?

cam*_*ter 4

我相信 OCaml 4.02.3 中没有办法阻止单个警告 32。

我在尝试抑制某个特定 toplevel 的警告(我的是 39)时遇到了同样的麻烦let。门票是http://caml.inria.fr/mantis/view.php?id=6677http://caml.inria.fr/mantis/view.php?id=6586

到目前为止,您可以做的是使用_前缀声明此类变量:

let _dbg () = ()
Run Code Online (Sandbox Code Playgroud)

因为以 开头的变量_超出了警告 32 的范围。缺点是没有可用的工具来警告_代码中是否实际使用了此类前缀值。