【问题标题】:Removing specific occurrence of "warning: unused value declaration"删除特定出现的“警告:未使用的值声明”
【发布时间】:2015-11-05 09:54:01
【问题描述】:

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

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

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

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

A.mli:

val f : unit -> unit

A.ml:

let f () = ()

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

let bla () = ()

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.

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

例如,如果我随后使用ocamlc a.mli a.ml 进行编译,则会添加不需要的警告。

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

【问题讨论】:

  • 您能否在问题中写下您的 OCaml 的版本号,因为这可能会在未来得到解决。
  • 完成,谢谢提醒。
  • 你的 sn-p 在 ocaml 4.07 中工作

标签: ocaml


【解决方案1】:

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

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

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

let _dbg () = ()

因为以_ 开头的变量超出了警告32 的范围。不利的一面是,如果您的代码中实际使用了这种_ 前缀值,则没有可用的工具发出警告。

【讨论】:

  • 实际上,对于一个不应该被导出的调试函数,无论如何想要_前缀可能几乎是有意义的......
猜你喜欢
  • 2017-03-04
  • 1970-01-01
  • 2022-10-05
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2011-07-02
相关资源
最近更新 更多