summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/source/attrib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/source/attrib.rs')
-rw-r--r--src/tools/rustfmt/tests/source/attrib.rs234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/source/attrib.rs b/src/tools/rustfmt/tests/source/attrib.rs
new file mode 100644
index 000000000..d45fba552
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/attrib.rs
@@ -0,0 +1,234 @@
+// rustfmt-wrap_comments: true
+// Test attributes and doc comments are preserved.
+#![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))))]
+
+//! Doc comment
+
+#![attribute]
+
+//! Crate doc comment
+
+// Comment
+
+// Comment on attribute
+#![the(attribute)]
+
+// Another comment
+
+/// Blah blah blah.
+/// Blah blah blah.
+/// Blah blah blah.
+/// Blah blah blah.
+
+/// Blah blah blah.
+impl Bar {
+ /// 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 {
+ }
+
+ /// 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 {
+ }
+
+ /// Blah blah bing.
+
+ #[attrib1]
+ /// Blah blah bing.
+ #[attrib2]
+ // Another comment that needs rewrite because it's tooooooooooooooooooooooooooooooo loooooooooooong.
+ /// Blah blah bing.
+ fn f4(self) -> Cat {
+ }
+
+ // We want spaces around `=`
+ #[cfg(feature="nightly")]
+ fn f5(self) -> Monkey {}
+}
+
+// #984
+struct Foo {
+ # [ derive ( Clone , PartialEq , Debug , Deserialize , Serialize ) ]
+ foo: usize,
+}
+
+// #1668
+
+/// Default path (*nix)
+#[cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))]
+fn foo() {
+ #[cfg(target_os = "freertos")]
+ match port_id {
+ 'a' | 'A' => GpioPort { port_address: GPIO_A },
+ 'b' | 'B' => GpioPort { port_address: GPIO_B },
+ _ => 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) ) ;
+}
+
+// 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!();
+}
+
+// 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)]
+pub struct HP(pub u8);
+
+// Long `#[doc = "..."]`
+struct A { #[doc = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] b: i32 }
+
+// #2647
+#[cfg(feature = "this_line_is_101_characters_long_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")]
+pub fn foo() {}
+
+// 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>
+}
+}
+
+// #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;
+
+// #3313
+fn stmt_expr_attributes() {
+ let foo ;
+ #[must_use]
+ foo = false ;
+}
+
+// #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,
+ }
+}