6.4.11 Useless pattern checks
In a similar fashion, the compiler detects patterns which will never match the input value:
switch(Leaf("foo")) {
case Leaf(_)
| Leaf("foo"): // This pattern is unused
case Node(l,r):
case _: // This pattern is unused
}