# E0253

A `match` that is not exhaustive, checked with the pattern-usefulness algorithm through nested constructor patterns. Guarded arms never count. `Int` and `String` matches need a `_` or binding arm. Spans the scrutinee; the message lists the missing patterns.

**Machine-applicable fix:** Add an arm for each missing pattern after the last arm, with `todo()` as its body.

## Example

This program fails with `E0253`.

```oska
fn count(x: Option<Int>) -> Int {
    match x {
        Some(n) => n
    }
}
```

## Fixed

The same program, fixed.

```oska
fn count(x: Option<Int>) -> Int {
    match x {
        Some(n) => n
        None => 0
    }
}
```

Listed in the [checker notes](/checker.md#e0253). `oskac explain E0253` prints this entry offline.