| // 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 | |
| //@ check-pass | |
| #![feature(rustc_attrs)] | |
| #![rustc_dummy = "val"] | |
| #![rustc_dummy = "val"] | |
| #![rustc_dummy] | |
| #![rustc_dummy(attr5)] | |
| // These are attributes of the following mod | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| mod test_first_item_in_file_mod {} | |
| mod test_single_attr_outer { | |
| #[rustc_dummy = "val"] | |
| pub static X: isize = 10; | |
| #[rustc_dummy = "val"] | |
| pub fn f() {} | |
| #[rustc_dummy = "val"] | |
| pub mod mod1 {} | |
| pub mod rustrt { | |
| #[rustc_dummy = "val"] | |
| extern "C" {} | |
| } | |
| } | |
| mod test_multi_attr_outer { | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| pub static X: isize = 10; | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| pub fn f() {} | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| pub mod mod1 {} | |
| pub mod rustrt { | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| extern "C" {} | |
| } | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| struct T { | |
| x: isize, | |
| } | |
| } | |
| mod test_stmt_single_attr_outer { | |
| pub fn f() { | |
| #[rustc_dummy = "val"] | |
| static X: isize = 10; | |
| #[rustc_dummy = "val"] | |
| fn f() {} | |
| #[rustc_dummy = "val"] | |
| mod mod1 {} | |
| mod rustrt { | |
| #[rustc_dummy = "val"] | |
| extern "C" {} | |
| } | |
| } | |
| } | |
| mod test_stmt_multi_attr_outer { | |
| pub fn f() { | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| static X: isize = 10; | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| fn f() {} | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| mod mod1 {} | |
| mod rustrt { | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| extern "C" {} | |
| } | |
| } | |
| } | |
| mod test_attr_inner { | |
| pub mod m { | |
| // This is an attribute of mod m | |
| #![rustc_dummy = "val"] | |
| } | |
| } | |
| mod test_attr_inner_then_outer { | |
| pub mod m { | |
| // This is an attribute of mod m | |
| #![rustc_dummy = "val"] | |
| // This is an attribute of fn f | |
| #[rustc_dummy = "val"] | |
| fn f() {} | |
| } | |
| } | |
| mod test_attr_inner_then_outer_multi { | |
| pub mod m { | |
| // This is an attribute of mod m | |
| #![rustc_dummy = "val"] | |
| #![rustc_dummy = "val"] | |
| // This is an attribute of fn f | |
| #[rustc_dummy = "val"] | |
| #[rustc_dummy = "val"] | |
| fn f() {} | |
| } | |
| } | |
| mod test_distinguish_syntax_ext { | |
| pub fn f() { | |
| format!("test{}", "s"); | |
| #[rustc_dummy = "val"] | |
| fn g() {} | |
| } | |
| } | |
| mod test_other_forms { | |
| #[rustc_dummy] | |
| #[rustc_dummy(word)] | |
| #[rustc_dummy(attr(word))] | |
| #[rustc_dummy(key1 = "val", key2 = "val", attr)] | |
| pub fn f() {} | |
| } | |
| mod test_foreign_items { | |
| pub mod rustrt { | |
| extern "C" { | |
| #![rustc_dummy] | |
| #[rustc_dummy] | |
| fn rust_get_test_int() -> isize; | |
| } | |
| } | |
| } | |
| // 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() { | |
| #![rustc_dummy] | |
| } | |
| fn main() {} |