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
}