| Functions marked with the `#[naked]` attribute are restricted in what other |
| attributes they may be marked with. |
| |
| Notable attributes that are incompatible with `#[naked]` are: |
| |
| * `#[inline]` |
| * `#[track_caller]` |
| * `#[test]`, `#[ignore]`, `#[should_panic]` |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0736 |
| #[inline] |
| #[unsafe(naked)] |
| fn foo() {} |
| ``` |
| |
| These incompatibilities are due to the fact that naked functions deliberately |
| impose strict restrictions regarding the code that the compiler is |
| allowed to produce for this function. |