//@ needs-asm-support #![feature(asm_cfg)] use std::arch::asm; fn main() { unsafe { asm!( "", #[cfg(false)] clobber_abi("C"), #[cfg(false)] options(att_syntax), #[cfg(false)] a = out(reg) x, "", //~^ ERROR expected one of `#`, `clobber_abi`, `const`, `in`, `inlateout`, `inout`, `label`, `lateout`, `options`, `out`, or `sym`, found `""` ); asm!( #[cfg(false)] "", #[cfg(false)] const { 5 }, "", //~^ ERROR expected one of `#`, `clobber_abi`, `const`, `in`, `inlateout`, `inout`, `label`, `lateout`, `options`, `out`, or `sym`, found `""` ); asm!( #[cfg_attr(true, cfg(false))] const { 5 }, "", ); // This is not accepted because `a = out(reg) x` is not a valid expression. asm!( #[cfg(false)] a = out(reg) x, //~ ERROR expected token: `,` "", ); // For now, any non-cfg attributes are rejected asm!( #[rustfmt::skip] //~ ERROR this attribute is not supported on assembly "", ); // For now, any non-cfg attributes are rejected asm!( #![rustfmt::skip] //~ ERROR an inner attribute is not permitted in this context "", ); } }