時々メソッドのインタフェースを揃えるために、わざと使わない引数を定義することが有る。
Scalatraでもインタフェースを揃えるためにServletのRequestとResponseをペアで定義しているが、必ずしも使っていない、みたいなコードがあり、ビルドの度に未使用パラメータの警告が出てしまう。
[warn] /repos/scalatra/auth/src/main/scala/org/scalatra/auth/ScentryStrategy.scala:44:35: parameter value request in method beforeAuthenticate is never used [warn] def beforeAuthenticate(implicit request: HttpServletRequest, response: HttpServletResponse): Unit = {} [warn] ^ [warn] /repos/scalatra/auth/src/main/scala/org/scalatra/auth/ScentryStrategy.scala:44:64: parameter value response in method beforeAuthenticate is never used [warn] def beforeAuthenticate(implicit request: HttpServletRequest, response: HttpServletResponse): Unit = {} [warn] ^
将来の拡張性のために意図した未使用は警告しないで欲しいなぁ…と思っていたら、Scala 2.13よりunused annotation
が追加された。
Scala Standard Library 2.13.0 - scala.annotation.unused
ドキュメントに全然コード例が無いので分かりづらいけど、テストコードにコメント付きで使い方が書かれているので、こちらを見た方が理解しやすいと思います。
scala/t10790.scala at 2.13.x · scala/scala · GitHub
Scala 2.13以降なので、後方互換性の観点からすぐに使うわけにはいかないけど、ライブラリ作ったりする人は知っておくといいと思いました。