From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/attributes/item-attributes.rs | 174 ++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 src/test/ui/attributes/item-attributes.rs (limited to 'src/test/ui/attributes/item-attributes.rs') diff --git a/src/test/ui/attributes/item-attributes.rs b/src/test/ui/attributes/item-attributes.rs new file mode 100644 index 000000000..c6bf6c656 --- /dev/null +++ b/src/test/ui/attributes/item-attributes.rs @@ -0,0 +1,174 @@ +// 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() -> 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() { + #![rustc_dummy] +} + +fn main() {} -- cgit v1.2.3