# `failure.propagate_placement`

Propagate is used outside a failure arm.

Area 3, [Logic](../topics/logic.md); not declinable; the next step is usually the agent's.

`propagate` passes a failure arm's failure on, so it has no meaning anywhere else:

```jadpo
type Count = Int {}

type TicketStatus = Enum {
    open
    closed
}

function priority(status: TicketStatus) -> Count {
    return match status {
        TicketStatus.open -> 1
        TicketStatus.closed -> propagate
    }
}
```

```text
error: `propagate` has no failure to pass on here
 --> main.jadpo:11:32
   |
11 |         TicketStatus.closed -> propagate
   |                                ^^^^^^^^^ not in a failure arm
  reason: `propagate` is an arm of a `match` on a call that can fail: it passes the failure that arm names on to the caller's `fails` list.
  next: Give a value, `return` or `reject` a failure here instead (agent)
  rule: failure.propagate_placement
  help: https://jadpo.dev/docs/errors/failure.propagate_placement

check failed: 1 error, 1 file
```
