summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/target/doc-attrib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/target/doc-attrib.rs')
-rw-r--r--src/tools/rustfmt/tests/target/doc-attrib.rs131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/target/doc-attrib.rs b/src/tools/rustfmt/tests/target/doc-attrib.rs
new file mode 100644
index 000000000..36527b7cd
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/doc-attrib.rs
@@ -0,0 +1,131 @@
+// rustfmt-wrap_comments: true
+// rustfmt-normalize_doc_attributes: true
+
+// Only doc = "" attributes should be normalized
+//! Example doc attribute comment
+//! 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 {
+ /// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ b: i32,
+}
+
+/// 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,
+}
+
+/// Level 1 comment
+mod tests {
+ /// Level 2 comment
+ impl A {
+ /// Level 3 comment
+ fn f() {
+ /// Level 4 comment
+ fn g() {}
+ }
+ }
+}
+
+struct C {
+ /// item doc attrib comment
+ // regular item comment
+ b: i32,
+
+ // regular item comment
+ /// 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
+/// <div rustbindgen accessor></div>
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct ContradictAccessors {
+ ///<foo>no leading spaces here</foo>
+ pub mBothAccessors: ::std::os::raw::c_int,
+ /// <div rustbindgen accessor="false"></div>
+ pub mNoAccessors: ::std::os::raw::c_int,
+ /// <div rustbindgen accessor="unsafe"></div>
+ pub mUnsafeAccessors: ::std::os::raw::c_int,
+ /// <div rustbindgen accessor="immutable"></div>
+ pub mImmutableAccessor: ::std::os::raw::c_int,
+}
+
+/// \brief MPI structure
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct mbedtls_mpi {
+ ///< integer sign
+ pub s: ::std::os::raw::c_int,
+ ///< total # of limbs
+ pub n: ::std::os::raw::c_ulong,
+ ///< pointer to limbs
+ pub p: *mut mbedtls_mpi_uint,
+}