Scalaコンパイラは、特定の警告メッセージに対してad-hocに警告からエラーに昇格させ、コンパイルを失敗させることができる。
以下のscalac optionを設定することで non-exhaustive match だけエラーにできる:
-Wconf:msg=match may not be exhaustive:error
sbtだと以下のような設定になる:
scalacOptions += "-Wconf:msg=match may not be exhaustive:error"
あらすじ
先日Scalaの英語版Discordを見ていたら、以下のような質問があった(意訳)
matchが不完全な場合にエラーにする方法ないの?-Werrorしたら全ての警告をエラーにできるけど、さすがに範囲がでかすぎて使いものにならないよ。
Scalaユーザにとってmatch
が不完全な状態は大抵の場合エラーにしたいはず。しかしこれだけエラーにする方法はなさそうでその時は自分も「たぶんそういうオプションはなさそう」と答えるほかなかった。
しかし後日Discordを見たところ解決していた。
また同様のことをScalaわいわいランドで訊いたところ同様の答えであった*1。
教えてくださった方々ありがとうございました。
*1:質問した時点では英語版のDiscordで解決済みであることを知らなかった