# E0094

Warning name: `unknown_intrinsic`

The [`#intrinsic`](/language/attributes/intrinsic.md) attribute names an intrinsic
that the compiler does not recognize. The compiler ignores the attribute and
uses the ordinary function body instead. This warning is enabled by default.

## Erroneous example

The name below is deliberately fictitious. The function still returns `42` for
the input `41`, but its attribute produces a warning:

```{literalinclude} /sources/error_codes/0094_error/top.mbt
:language: moonbit
```

## Suggestion

Remove the attribute and keep the ordinary implementation. Intrinsics are not
a stable API and are not recommended for application code.

```{literalinclude} /sources/error_codes/0094_fixed/top.mbt
:language: moonbit
```

This differs from [E4070](E4070.md): a declaration such as
`fn f(x : Int32) -> Int32 = "%not_a_real_intrinsic"` has no ordinary function
body to fall back to, so an unknown intrinsic is an error rather than a warning.
