rust/src/test/run-pass/item-attributes.rs

221 lines
3.7 KiB
Rust
Raw Normal View History

// 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
#[attr1 = "val"];
#[attr2 = "val"];
#[attr3];
#[attr4(attr5)];
// Special linkage attributes for the crate
#[link(name = "std",
vers = "0.1",
uuid = "122bed0b-c19b-4b82-b0b7-7ae8aead7297",
url = "http://rust-lang.org/src/std")];
// These are are attributes of the following mod
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
mod test_first_item_in_file_mod { }
mod test_single_attr_outer {
#[attr = "val"]
2011-07-27 07:19:39 -05:00
const x: int = 10;
#[attr = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
#[attr = "val"]
2011-07-27 07:19:39 -05:00
mod mod1 { }
#[attr = "val"]
native "rust" mod rustrt { }
#[attr = "val"]
type t = obj { };
#[attr = "val"]
obj o() { }
}
mod test_multi_attr_outer {
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
const x: int = 10;
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
mod mod1 { }
#[attr1 = "val"]
#[attr2 = "val"]
native "rust" mod rustrt { }
#[attr1 = "val"]
#[attr2 = "val"]
type t = obj { };
#[attr1 = "val"]
#[attr2 = "val"]
obj o() { }
}
mod test_stmt_single_attr_outer {
fn f() {
#[attr = "val"]
2011-07-27 07:19:39 -05:00
const x: int = 10;
#[attr = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
/* FIXME: Issue #493
#[attr = "val"]
mod mod1 {
}
2011-07-27 07:48:34 -05:00
#[attr = "val"]
native "rust" mod rustrt {
}
*/
#[attr = "val"]
type t = obj { };
#[attr = "val"]
obj o() { }
}
}
mod test_stmt_multi_attr_outer {
fn f() {
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
const x: int = 10;
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
/* FIXME: Issue #493
#[attr1 = "val"]
#[attr2 = "val"]
mod mod1 {
}
2011-07-27 07:48:34 -05:00
#[attr1 = "val"]
#[attr2 = "val"]
native "rust" mod rustrt {
}
*/
#[attr1 = "val"]
#[attr2 = "val"]
type t = obj { };
#[attr1 = "val"]
#[attr2 = "val"]
obj o() { }
}
}
mod test_attr_inner {
mod m {
// This is an attribute of mod m
#[attr = "val"];
}
}
mod test_attr_inner_then_outer {
mod m {
// This is an attribute of mod m
#[attr = "val"];
// This is an attribute of fn f
#[attr = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
}
}
mod test_attr_inner_then_outer_multi {
mod m {
// This is an attribute of mod m
#[attr1 = "val"];
#[attr2 = "val"];
// This is an attribute of fn f
#[attr1 = "val"]
#[attr2 = "val"]
2011-07-27 07:19:39 -05:00
fn f() { }
}
}
mod test_distinguish_syntax_ext {
use std;
fn f() {
#ifmt["test%s", ~"s"];
#[attr = "val"]
2011-07-27 07:19:39 -05:00
fn g() { }
}
}
mod test_other_forms {
#[attr]
#[attr(word)]
#[attr(attr(word))]
2011-07-27 07:19:39 -05:00
#[attr(key1 = "val", key2 = "val", attr)]
fn f() { }
}
mod test_native_items {
native "rust" mod rustrt {
#[attr];
#[attr]
2011-08-12 12:40:25 -05:00
type sbuf;
#[attr]
2011-08-12 12:40:25 -05:00
fn str_buf(s: str) -> sbuf;
}
}
mod test_literals {
#[str = "s"];
#[char = 'c'];
#[int = 100];
#[uint = 100u];
#[mach_int = 100u32];
#[float = 1.0];
#[mach_float = 1.0f32];
2011-08-23 20:09:30 -05:00
#[nil = ()];
#[bool = true];
2011-07-27 07:19:39 -05:00
mod m { }
}
2011-07-27 07:19:39 -05:00
fn main() { }
//
// Local Variables:
// mode: rust
// fill-column: 78;
// indent-tabs-mode: nil
// c-basic-offset: 4
// buffer-file-coding-system: utf-8-unix
// compile-command: "make -k -C $RBUILD 2>&1 | sed -e 's/\\/x\\//x:\\//g'";
// End:
//