1 // Check that use of function parameters is validate in naked functions.
3 // ignore-wasm32 asm unsupported
5 #![feature(naked_functions)]
6 #![feature(or_patterns)]
10 pub struct P { x: u8, y: u16 }
13 pub unsafe extern "C" fn f(
15 //~^ ERROR patterns not allowed in naked function parameters
17 //~^ ERROR patterns not allowed in naked function parameters
18 (None | Some(_)): Option<std::ptr::NonNull<u8>>,
19 //~^ ERROR patterns not allowed in naked function parameters
21 //~^ ERROR patterns not allowed in naked function parameters
23 asm!("", options(noreturn))
27 pub unsafe extern "C" fn inc(a: u32) -> u32 {
29 //~^ ERROR use of parameters not allowed inside naked functions
33 pub unsafe extern "C" fn inc_asm(a: u32) -> u32 {
34 asm!("/* {0} */", in(reg) a, options(noreturn));
35 //~^ ERROR use of parameters not allowed inside naked functions
39 pub unsafe extern "C" fn sum(x: u32, y: u32) -> u32 {
40 // FIXME: Should be detected by asm-only check.
44 pub fn outer(x: u32) -> extern "C" fn(usize) -> usize {
46 pub extern "C" fn inner(y: usize) -> usize {
48 //~^ ERROR use of parameters not allowed inside naked functions