// aux-build:param-attrs.rs // check-pass #![feature(c_variadic)] extern crate param_attrs; use param_attrs::*; struct W(u8); #[attr_extern] extern "C" { fn ffi(#[a1] arg1: i32, #[a2] ...); } #[attr_extern_cvar] unsafe extern "C" fn cvar(arg1: i32, #[a1] mut args: ...) {} #[attr_alias] type Alias = fn(#[a1] u8, #[a2] ...); #[attr_free] fn free(#[a1] arg1: u8) { let lam = |#[a2] W(x), #[a3] y| (); } impl W { #[attr_inherent_1] fn inherent1(#[a1] self, #[a2] arg1: u8) {} #[attr_inherent_2] fn inherent2(#[a1] &self, #[a2] arg1: u8) {} #[attr_inherent_3] fn inherent3<'a>(#[a1] &'a mut self, #[a2] arg1: u8) {} #[attr_inherent_4] fn inherent4<'a>(#[a1] self: Box, #[a2] arg1: u8) {} } trait A { #[attr_trait_1] fn trait1(#[a1] self, #[a2] arg1: u8); #[attr_trait_2] fn trait2(#[a1] &self, #[a2] arg1: u8); #[attr_trait_3] fn trait3<'a>(#[a1] &'a mut self, #[a2] arg1: u8); #[attr_trait_4] fn trait4<'a>(#[a1] self: Box, #[a2] arg1: u8, #[a3] Vec); } fn main() {}