2014-04-04 00:55:06 +00:00
|
|
|
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
|
2012-12-11 01:32:48 +00:00
|
|
|
// file at the top-level directory of this distribution and at
|
|
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
|
|
// option. This file may not be copied, modified, or distributed
|
|
|
|
// except according to those terms.
|
|
|
|
|
2011-06-28 19:53:59 +00:00
|
|
|
// 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
|
2014-05-23 05:29:13 +00:00
|
|
|
#![allow(unused_attribute)]
|
2014-04-14 15:30:31 +00:00
|
|
|
#![attr1 = "val"]
|
|
|
|
#![attr2 = "val"]
|
|
|
|
#![attr3]
|
|
|
|
#![attr4(attr5)]
|
2011-06-28 19:53:59 +00:00
|
|
|
|
2014-04-14 15:30:31 +00:00
|
|
|
#![crate_id="foobar#0.1"]
|
2011-06-28 19:53:59 +00:00
|
|
|
|
2013-06-06 07:38:41 +00:00
|
|
|
// These are attributes of the following mod
|
2011-06-28 19:53:59 +00:00
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-01-30 23:56:40 +00:00
|
|
|
mod test_first_item_in_file_mod {}
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
mod test_single_attr_outer {
|
|
|
|
#[attr = "val"]
|
2013-03-22 21:00:15 +00:00
|
|
|
pub static x: int = 10;
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr = "val"]
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr = "val"]
|
2013-01-30 23:56:40 +00:00
|
|
|
pub mod mod1 {}
|
2011-06-28 19:53:59 +00:00
|
|
|
|
2013-03-05 22:42:58 +00:00
|
|
|
pub mod rustrt {
|
|
|
|
#[attr = "val"]
|
2013-10-14 12:33:05 +00:00
|
|
|
extern {}
|
2013-03-05 22:42:58 +00:00
|
|
|
}
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
mod test_multi_attr_outer {
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-03-22 21:00:15 +00:00
|
|
|
pub static x: int = 10;
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-01-30 23:56:40 +00:00
|
|
|
pub mod mod1 {}
|
2011-06-28 19:53:59 +00:00
|
|
|
|
2013-03-05 22:42:58 +00:00
|
|
|
pub mod rustrt {
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-10-14 12:33:05 +00:00
|
|
|
extern {}
|
2013-03-05 22:42:58 +00:00
|
|
|
}
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-03-07 03:09:17 +00:00
|
|
|
struct t {x: int}
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
mod test_stmt_single_attr_outer {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() {
|
2011-06-28 19:53:59 +00:00
|
|
|
#[attr = "val"]
|
2013-03-22 21:00:15 +00:00
|
|
|
static x: int = 10;
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr = "val"]
|
2011-07-27 12:19:39 +00:00
|
|
|
fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr = "val"]
|
|
|
|
mod mod1 {
|
|
|
|
}
|
2011-07-27 12:48:34 +00:00
|
|
|
|
2013-03-05 22:42:58 +00:00
|
|
|
mod rustrt {
|
|
|
|
#[attr = "val"]
|
2013-10-14 12:33:05 +00:00
|
|
|
extern {
|
2013-03-05 22:42:58 +00:00
|
|
|
}
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_stmt_multi_attr_outer {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() {
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-03-22 21:00:15 +00:00
|
|
|
static x: int = 10;
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2011-07-27 12:19:39 +00:00
|
|
|
fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
|
|
|
mod mod1 {
|
|
|
|
}
|
2011-07-27 12:48:34 +00:00
|
|
|
|
2014-06-23 17:01:14 +00:00
|
|
|
mod rustrt {
|
2013-03-05 22:42:58 +00:00
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2013-10-14 12:33:05 +00:00
|
|
|
extern {
|
2013-03-05 22:42:58 +00:00
|
|
|
}
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_attr_inner {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub mod m {
|
2011-06-28 19:53:59 +00:00
|
|
|
// This is an attribute of mod m
|
2014-04-14 15:30:31 +00:00
|
|
|
#![attr = "val"]
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_attr_inner_then_outer {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub mod m {
|
2011-06-28 19:53:59 +00:00
|
|
|
// This is an attribute of mod m
|
2014-04-14 15:30:31 +00:00
|
|
|
#![attr = "val"]
|
2011-06-28 19:53:59 +00:00
|
|
|
// This is an attribute of fn f
|
|
|
|
#[attr = "val"]
|
2011-07-27 12:19:39 +00:00
|
|
|
fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_attr_inner_then_outer_multi {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub mod m {
|
2011-06-28 19:53:59 +00:00
|
|
|
// This is an attribute of mod m
|
2014-04-14 15:30:31 +00:00
|
|
|
#![attr1 = "val"]
|
|
|
|
#![attr2 = "val"]
|
2011-06-28 19:53:59 +00:00
|
|
|
// This is an attribute of fn f
|
|
|
|
#[attr1 = "val"]
|
|
|
|
#[attr2 = "val"]
|
2011-07-27 12:19:39 +00:00
|
|
|
fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_distinguish_syntax_ext {
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() {
|
2013-09-30 02:23:57 +00:00
|
|
|
format!("test{}", "s");
|
2011-06-28 19:53:59 +00:00
|
|
|
#[attr = "val"]
|
2011-07-27 12:19:39 +00:00
|
|
|
fn g() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod test_other_forms {
|
|
|
|
#[attr]
|
|
|
|
#[attr(word)]
|
|
|
|
#[attr(attr(word))]
|
2011-07-27 12:19:39 +00:00
|
|
|
#[attr(key1 = "val", key2 = "val", attr)]
|
2013-01-30 23:56:40 +00:00
|
|
|
pub fn f() { }
|
2011-06-28 19:53:59 +00:00
|
|
|
}
|
|
|
|
|
2012-06-26 23:18:37 +00:00
|
|
|
mod test_foreign_items {
|
2013-03-05 22:42:58 +00:00
|
|
|
pub mod rustrt {
|
2014-02-26 17:58:41 +00:00
|
|
|
extern crate libc;
|
2013-05-25 02:35:29 +00:00
|
|
|
|
2013-10-14 12:33:05 +00:00
|
|
|
extern {
|
2014-04-04 00:55:06 +00:00
|
|
|
#![attr]
|
2011-07-05 19:38:53 +00:00
|
|
|
|
2013-03-05 22:42:58 +00:00
|
|
|
#[attr]
|
2013-08-01 06:12:20 +00:00
|
|
|
fn rust_get_test_int() -> libc::intptr_t;
|
2013-03-05 22:42:58 +00:00
|
|
|
}
|
2011-07-05 19:38:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-30 00:47:11 +00:00
|
|
|
|
|
|
|
// FIXME #623 - these aren't supported yet
|
|
|
|
/*mod test_literals {
|
2014-04-14 15:30:31 +00:00
|
|
|
#![str = "s"]
|
|
|
|
#![char = 'c']
|
|
|
|
#![int = 100]
|
|
|
|
#![uint = 100u]
|
|
|
|
#![mach_int = 100u32]
|
|
|
|
#![float = 1.0]
|
|
|
|
#![mach_float = 1.0f32]
|
|
|
|
#![nil = ()]
|
|
|
|
#![bool = true]
|
2013-01-30 23:56:40 +00:00
|
|
|
mod m {}
|
2013-10-30 00:47:11 +00:00
|
|
|
}*/
|
2011-07-06 00:01:23 +00:00
|
|
|
|
2012-01-16 01:23:59 +00:00
|
|
|
fn test_fn_inner() {
|
2014-04-14 15:30:31 +00:00
|
|
|
#![inner_fn_attr]
|
2012-01-16 01:23:59 +00:00
|
|
|
}
|
|
|
|
|
2013-02-02 03:43:17 +00:00
|
|
|
pub fn main() { }
|