amindfv
amindfv

Reputation: 8458

Stop GHC from warning me about one particular missing pattern

Let's say I would generally like to be warned about incomplete patterns in my code, but sometimes I know about a pattern incompleteness for a certain function and I know it's fine.

Is it still true that GHC's warning granularity is per-module, and there's no way to change warnings regarding a particular function or definition?

Upvotes: 4

Views: 909

Answers (1)

AndrewC
AndrewC

Reputation: 32455

Yes, still true, but you can work around this by using error.

f (Just a) = show a

without a case for Nothing gives warnings but adding

f Nothing = error "f: Nothing supplied as an argument. This shouldn't have happened. Oops."

gets rid of the warning.

A per-function solution of your problem is to give Haskell some code you think will never be run, to keep it quiet.

Please note: I think your code should be robust and cover every eventuality unless you can prove it will never happen. Working around this restriction isn't very good practice, I think.

(You might think that is a wide-open back door to hack away a useful compile-time check and should be stopped by -Wall, but I can obfuscate my round any simple restriction you'd choose and I think a complete solution to that problem would essentially solve the halting problem, so let's not blame the compiler.)

Upvotes: 6

Related Questions