#![allow(non_camel_case_types)] #![allow(non_upper_case_globals)] #![allow(unused_attributes)] #![allow(dead_code)] #![allow(unknown_lints)] // These are attributes of the implicit crate. Really this just needs to parse // for completeness since .rs files linked from .rc files support this // notation to specify their module's attributes #![feature(custom_attribute)] #![allow(unused_attribute)] #![attr1 = "val"] #![attr2 = "val"] #![attr3] #![attr4(attr5)] #![crate_id="foobar#0.1"] // These are attributes of the following mod #[attr1 = "val"] #[attr2 = "val"] mod test_first_item_in_file_mod {} mod test_single_attr_outer { #[attr = "val"] pub static x: isize = 10; #[attr = "val"] pub fn f() { } #[attr = "val"] pub mod mod1 {} pub mod rustrt { #[attr = "val"] extern {} } } mod test_multi_attr_outer { #[attr1 = "val"] #[attr2 = "val"] pub static x: isize = 10; #[attr1 = "val"] #[attr2 = "val"] pub fn f() { } #[attr1 = "val"] #[attr2 = "val"] pub mod mod1 {} pub mod rustrt { #[attr1 = "val"] #[attr2 = "val"] extern {} } #[attr1 = "val"] #[attr2 = "val"] struct t {x: isize} } mod test_stmt_single_attr_outer { pub fn f() { #[attr = "val"] static x: isize = 10; #[attr = "val"] fn f() { } #[attr = "val"] mod mod1 { } mod rustrt { #[attr = "val"] extern { } } } } mod test_stmt_multi_attr_outer { pub fn f() { #[attr1 = "val"] #[attr2 = "val"] static x: isize = 10; #[attr1 = "val"] #[attr2 = "val"] fn f() { } #[attr1 = "val"] #[attr2 = "val"] mod mod1 { } mod rustrt { #[attr1 = "val"] #[attr2 = "val"] extern { } } } } mod test_attr_inner { pub mod m { // This is an attribute of mod m #![attr = "val"] } } mod test_attr_inner_then_outer { pub mod m { // This is an attribute of mod m #![attr = "val"] // This is an attribute of fn f #[attr = "val"] fn f() { } } } mod test_attr_inner_then_outer_multi { pub mod m { // This is an attribute of mod m #![attr1 = "val"] #![attr2 = "val"] // This is an attribute of fn f #[attr1 = "val"] #[attr2 = "val"] fn f() { } } } mod test_distinguish_syntax_ext { pub fn f() { format!("test{}", "s"); #[attr = "val"] fn g() { } } } mod test_other_forms { #[attr] #[attr(word)] #[attr(attr(word))] #[attr(key1 = "val", key2 = "val", attr)] pub fn f() { } } mod test_foreign_items { pub mod rustrt { extern { #![attr] #[attr] fn rust_get_test_int() -> u32; } } } // FIXME #623 - these aren't supported yet /*mod test_literals { #![str = "s"] #![char = 'c'] #![isize = 100] #![usize = 100_usize] #![mach_int = 100u32] #![float = 1.0] #![mach_float = 1.0f32] #![nil = ()] #![bool = true] mod m {} }*/ fn test_fn_inner() { #![inner_fn_attr] } pub fn main() { }