blog.anqou.net
rss
author
tags

OCaml で警告を抑制する

Dune を用いて OCaml コードをコンパイルすると、デフォルトで様々な警告が有効化されます。例えば使用していない変数には warning 26 が発報します:

File "backend/bin/main.ml", line 14, characters 6-10:
14 |   let hoge = 3 in
           ^^^^
Error (warning 26 [unused-var]): unused variable hoge.

これを無効化するには [@warning "..."] が使えます。例えば以下のように使います:

let f () =
  let[@warning "-26"] hoge = 3 in
  ()

@ が一つだと式単位ですが、@@ だとブロック単位になります。同じ例で、以下のように使えます:

let f () =
  let hoge = 3 in
  ()
[@@warning "-26"]

@@@ だと、それ以降の全てのプログラムでその警告が無効化されます:

[@@@warning "-26"]

let f () =
  let hoge = 3 in
  ()

なお複数の警告を無効化したい場合は [@warning "-26-27"] のように書けます。