rust/tests/target/attrib.rs

272 lines
5.3 KiB
Rust
Raw Normal View History

// rustfmt-wrap_comments: true
// Test attributes and doc comments are preserved.
2018-03-28 03:41:58 -05:00
#![doc(
html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
html_root_url = "https://doc.rust-lang.org/nightly/",
html_playground_url = "https://play.rust-lang.org/",
test(attr(deny(warnings)))
)]
2017-08-27 10:18:17 -05:00
//! Doc comment
#![attribute]
//! Crate doc comment
// Comment
// Comment on attribute
#![the(attribute)]
// Another comment
2015-04-28 23:21:04 -05:00
/// Blah blah blah.
/// Blah blah blah.
/// Blah blah blah.
/// Blah blah blah.
/// Blah blah blah.
impl Bar {
2015-04-28 23:21:04 -05:00
/// Blah blah blooo.
/// Blah blah blooo.
/// Blah blah blooo.
/// Blah blah blooo.
#[an_attribute]
#[doc = "an attribute that shouldn't be normalized to a doc comment"]
fn foo(&mut self) -> isize {}
2015-04-28 23:21:04 -05:00
/// Blah blah bing.
/// Blah blah bing.
/// Blah blah bing.
/// Blah blah bing.
/// Blah blah bing.
/// Blah blah bing.
pub fn f2(self) {
(foo, bar)
}
#[another_attribute]
fn f3(self) -> Dog {}
2015-07-17 16:10:15 -05:00
/// Blah blah bing.
2017-08-27 10:18:17 -05:00
2015-07-17 16:10:15 -05:00
#[attrib1]
/// Blah blah bing.
#[attrib2]
2017-08-27 10:18:17 -05:00
// Another comment that needs rewrite because it's tooooooooooooooooooooooooooooooo
// loooooooooooong.
2015-07-17 16:10:15 -05:00
/// Blah blah bing.
fn f4(self) -> Cat {}
// We want spaces around `=`
#[cfg(feature = "nightly")]
fn f5(self) -> Monkey {}
}
// #984
struct Foo {
2018-01-11 01:53:13 -06:00
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
foo: usize,
}
2017-06-13 10:09:17 -05:00
// #1668
/// Default path (*nix)
2018-08-05 18:10:04 -05:00
#[cfg(all(
unix,
not(target_os = "macos"),
not(target_os = "ios"),
not(target_os = "android")
))]
2017-06-13 10:09:17 -05:00
fn foo() {
#[cfg(target_os = "freertos")]
match port_id {
2017-07-03 04:54:26 -05:00
'a' | 'A' => GpioPort {
port_address: GPIO_A,
},
'b' | 'B' => GpioPort {
port_address: GPIO_B,
},
2017-06-13 10:09:17 -05:00
_ => panic!(),
}
#[cfg_attr(not(target_os = "freertos"), allow(unused_variables))]
let x = 3;
}
// #1777
#[test]
#[should_panic(expected = "(")]
#[should_panic(expected = /* ( */ "(")]
#[should_panic(/* ((((( */expected /* ((((( */= /* ((((( */ "("/* ((((( */)]
#[should_panic(
/* (((((((( *//*
(((((((((()(((((((( */
expected = "("
// ((((((((
)]
fn foo() {}
// #1799
fn issue_1799() {
#[allow(unreachable_code)] // https://github.com/rust-lang/rust/issues/43336
Some(Err(error));
#[allow(unreachable_code)]
// https://github.com/rust-lang/rust/issues/43336
Some(Err(error));
}
2017-07-24 10:56:09 -05:00
// Formatting inner attributes
fn inner_attributes() {
#![this_is_an_inner_attribute(foo)]
foo();
}
impl InnerAttributes() {
#![this_is_an_inner_attribute(foo)]
fn foo() {}
}
mod InnerAttributes {
#![this_is_an_inner_attribute(foo)]
}
fn attributes_on_statements() {
// Local
#[attr(on(local))]
let x = 3;
// Item
#[attr(on(item))]
use foo;
// Expr
#[attr(on(expr))]
{}
// Semi
#[attr(on(semi))]
foo();
// Mac
#[attr(on(mac))]
foo!();
}
2017-09-02 18:14:00 -05:00
// Large derives
#[derive(
Add, Sub, Mul, Div, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, Serialize, Mul,
)]
/// Foo bar baz
#[derive(
Add,
Sub,
Mul,
Div,
Clone,
Copy,
Eq,
PartialEq,
Ord,
PartialOrd,
Debug,
Hash,
Serialize,
Deserialize,
)]
2017-09-02 18:14:00 -05:00
pub struct HP(pub u8);
2018-02-23 07:52:56 -06:00
// Long `#[doc = "..."]`
struct A {
#[doc = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
b: i32,
}
// #2647
#[cfg(
feature = "this_line_is_101_characters_long_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
)]
pub fn foo() {}
2018-05-13 23:04:15 -05:00
// path attrs
#[clippy::bar]
#[clippy::bar(a, b, c)]
pub fn foo() {}
mod issue_2620 {
#[derive(Debug, StructOpt)]
#[structopt(about = "Display information about the character on FF Logs")]
pub struct Params {
#[structopt(help = "The server the character is on")]
server: String,
#[structopt(help = "The character's first name")]
first_name: String,
#[structopt(help = "The character's last name")]
last_name: String,
#[structopt(
short = "j",
long = "job",
help = "The job to look at",
parse(try_from_str)
)]
job: Option<Job>,
}
}
2018-08-27 02:12:11 -05:00
// #2969
#[cfg(not(all(
feature = "std",
any(
target_os = "linux",
target_os = "android",
target_os = "netbsd",
target_os = "dragonfly",
target_os = "haiku",
target_os = "emscripten",
target_os = "solaris",
target_os = "cloudabi",
target_os = "macos",
target_os = "ios",
target_os = "freebsd",
target_os = "openbsd",
target_os = "redox",
target_os = "fuchsia",
windows,
all(target_arch = "wasm32", feature = "stdweb"),
all(target_arch = "wasm32", feature = "wasm-bindgen"),
)
)))]
type Os = NoSource;
2019-02-06 08:10:27 -06:00
// #3313
fn stmt_expr_attributes() {
let foo;
#[must_use]
foo = false;
2019-02-06 08:10:27 -06:00
}
2019-04-14 06:12:58 -05:00
// #3509
fn issue3509() {
match MyEnum {
MyEnum::Option1 if cfg!(target_os = "windows") =>
#[cfg(target_os = "windows")]
{
1
}
}
match MyEnum {
MyEnum::Option1 if cfg!(target_os = "windows") =>
{
#[cfg(target_os = "windows")]
1
}
}
}