# XO0301: match does not cover every case

A `match` must cover every value of its subject. The message lists example patterns that are missing (such as `C`, `Some(Err(_))`, `[_]`, or `_` for integers and strings). Guarded arms (`if ...`) do not count toward coverage. A `match` on `target.os` must name every OS, so a missing platform fails on every host. Add the missing arms. For an enum declared in the same module, list the variants rather than adding `_` (XO0305). See core 2.3 and 3.5.

## Example

```xo
enum E { A, B, C }

fn f(e: E) -> Int {
  match e {
    A => 1
    B => 2
  }
}
```

## Fix

```xo
enum E { A, B, C }

fn f(e: E) -> Int {
  match e {
    A => 1
    B | C => 2
  }
}
```

Run `xo explain XO0301` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

