> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sifr.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# SIFR-OWN-0014: Unsupported mutable receiver place.

> Unsupported mutable receiver place.

`SIFR-OWN-0014` belongs to the **Ownership and borrowing** diagnostic family. It means: unsupported mutable receiver place.

## Why It Happens

The ownership model would be violated. Move values only once, keep borrows scoped, and cross task/channel/IPC boundaries only with owned values that satisfy the required safety traits.

<Info>
  Use `sifr --explain SIFR-OWN-0014` locally to see the renderer's exact message template and any machine-applicable suggestions for the compiler version you are running.
</Info>

## Erroneous Code

```python theme={null}
class Counter:
    value: int

    def bump(self) -> None:
        self.value += 1

def update(maybe: Counter | None) -> None:
    if maybe is not None:
        maybe.bump()
```

## How To Fix It

Call the mutating method through a stable owned local, mutable parameter, or a
supported non-optional field place. In a constructor, initialize every declared
field (and call `super().__init__` for inherited storage) before the first
statement that reads or mutates `self`.

## Fixed Code

```python theme={null}
class Counter:
    value: int

    def bump(self) -> None:
        self.value += 1

def update(mut counter: Counter) -> None:
    counter.bump()
```

## Details

| Field                  | Value                                                                             |
| ---------------------- | --------------------------------------------------------------------------------- |
| Code                   | `SIFR-OWN-0014`                                                                   |
| Family                 | `OWN`                                                                             |
| Severity               | Error                                                                             |
| Stability              | stable                                                                            |
| Owner                  | `sifr_lowering::lower::method_receiver_places`                                    |
| Representative fixture | `crates/sifr/tests/e2e/fail/unsupported_narrowed_optional_mutating_receiver.sifr` |

See the [Error Codes index](/diagnostics/error-codes) for the complete catalog.
