summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/source/doc-attrib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/source/doc-attrib.rs')
-rw-r--r--src/tools/rustfmt/tests/source/doc-attrib.rs118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/source/doc-attrib.rs b/src/tools/rustfmt/tests/source/doc-attrib.rs
new file mode 100644
index 000000000..dde88c6e9
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/doc-attrib.rs
@@ -0,0 +1,118 @@
+// rustfmt-wrap_comments: true
+// rustfmt-normalize_doc_attributes: true
+
+// Only doc = "" attributes should be normalized
+#![doc = " Example doc attribute comment"]
+#![doc = " Example doc attribute comment with 10 leading spaces"]
+#![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))))]
+
+
+// Long `#[doc = "..."]`
+struct A { #[doc = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] b: i32 }
+
+
+#[doc = " The `nodes` and `edges` method each return instantiations of `Cow<[T]>` to leave implementers the freedom to create entirely new vectors or to pass back slices into internally owned vectors."]
+struct B { b: i32 }
+
+
+#[doc = " Level 1 comment"]
+mod tests {
+ #[doc = " Level 2 comment"]
+ impl A {
+ #[doc = " Level 3 comment"]
+ fn f() {
+ #[doc = " Level 4 comment"]
+ fn g() {
+ }
+ }
+ }
+}
+
+struct C {
+ #[doc = " item doc attrib comment"]
+ // regular item comment
+ b: i32,
+
+ // regular item comment
+ #[doc = " item doc attrib comment"]
+ c: i32,
+}
+
+// non-regression test for regular attributes, from #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>
+}
+}
+
+// non-regression test for regular attributes, from #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;
+
+// use cases from bindgen needing precise control over leading spaces
+#[doc = " <div rustbindgen accessor></div>"]
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct ContradictAccessors {
+ #[doc = "<foo>no leading spaces here</foo>"]
+ pub mBothAccessors: ::std::os::raw::c_int,
+ #[doc = " <div rustbindgen accessor=\"false\"></div>"]
+ pub mNoAccessors: ::std::os::raw::c_int,
+ #[doc = " <div rustbindgen accessor=\"unsafe\"></div>"]
+ pub mUnsafeAccessors: ::std::os::raw::c_int,
+ #[doc = " <div rustbindgen accessor=\"immutable\"></div>"]
+ pub mImmutableAccessor: ::std::os::raw::c_int,
+}
+
+#[doc = " \\brief MPI structure"]
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct mbedtls_mpi {
+ #[doc = "< integer sign"]
+ pub s: ::std::os::raw::c_int,
+ #[doc = "< total # of limbs"]
+ pub n: ::std::os::raw::c_ulong,
+ #[doc = "< pointer to limbs"]
+ pub p: *mut mbedtls_mpi_uint,
+}