ocaml - 如何禁用错误(警告 66):未使用打开!在沙丘
问题描述
根据https://github.com/ocaml/ocaml/pull/1110,OCaml 4.08 及更高版本会针对未使用的模块打开发出警告,即使它们是用open!
. open! Foo
这与使用来确定以下代码将在模块上下文中的常见做法产生摩擦Foo
(无论是否从内部使用任何东西Foo
)。此外,由于dune
默认情况下将所有警告视为致命错误,这将导致默认dev
配置文件中的沙丘构建失败,并出现以下错误
$ dune build
File "lib/mylib.ml", line 1, characters 0-10:
1 | open! Core
^^^^^^^^^^
Error (warning 66): unused open! Core.
如何禁用此警告和致命错误?
解决方案
沙丘常见问题解答解释了如何配置警告以使其“非致命”(让构建继续进行)。但是,这仍然会使您的构建输出混乱。对于使用该open! Foo
成语建立上下文的开发人员来说,这很烦人。最好的解决方案是选择性地为项目禁用此警告:
dune
在项目的根目录下创建一个文件添加以下节
(env (dev (flags (:standard -w -66))))
本节指示在配置文件下构建时将带有参数的标志dune
传递给 OCaml 编译器。解释了这个标志是如何工作的:-w
-66
dev
man ocamlc
-w warning-list
Enable, disable, or mark as fatal the warnings specified by the argument warning-list.
...
-num Disable warning number num.
...
The warning numbers are as follows.
...
66 Unused open! statement.
推荐阅读
- python - 尝试使用锁定创建简单的按钮推送播放
- google-coral - mdt:找不到命令 [mendel 开发工具]
- python - 在python中的引号内打印多个变量
- ruby-on-rails - ActionController::ParameterMissing 在使用 form_tag 创建
- sas - 如何计算 SAS 中的正态和逆正态分布函数?
- python - 在特定列上查找两行之间的差异
- c# - 在浏览器 ASP.NET C# 的新选项卡中从 GridView 打开 JPEG/图像文件
- go - go test 不会构建:调用有可能的格式化指令
- python - 模块“plotly.graph_objs”没有属性“Choroplethmapbox”
- python - 如何从 ndarray 的列中索引元素,以使输出是列向量?