rust/src/test/run-pass/item-attributes.rs
2018-12-25 21:08:33 -07:00

185 lines
3.2 KiB
Rust

#![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() { }