error: this attribute can only be applied at the crate level
  --> $DIR/invalid-doc-attr.rs:7:7
   |
LL | #[doc(test(no_crate_inject))]
   |       ^^^^^^^^^^^^^^^^^^^^^
   |
   = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
   = note: `#[deny(invalid_doc_attributes)]` on by default
help: to apply to the crate, use an inner attribute
   |
LL | #![doc(test(no_crate_inject))]
   |  +

error: this attribute can only be applied to a `use` item
  --> $DIR/invalid-doc-attr.rs:11:7
   |
LL | #[doc(inline)]
   |       ^^^^^^ only applicable on `use` items
LL |
LL | pub fn foo() {}
   | ------------ not a `use` item
   |
   = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#inline-and-no_inline> for more information

error: this attribute can only be applied at the crate level
  --> $DIR/invalid-doc-attr.rs:16:12
   |
LL |     #![doc(test(no_crate_inject))]
   |            ^^^^^^^^^^^^^^^^^^^^^
   |
   = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information

error: conflicting doc inlining attributes
  --> $DIR/invalid-doc-attr.rs:26:7
   |
LL | #[doc(inline)]
   |       ^^^^^^ this attribute...
LL | #[doc(no_inline)]
   |       ^^^^^^^^^ ...conflicts with this attribute
   |
   = help: remove one of the conflicting attributes

error: this attribute can only be applied to an `extern crate` item
  --> $DIR/invalid-doc-attr.rs:32:7
   |
LL | #[doc(masked)]
   |       ^^^^^^ only applicable on `extern crate` items
LL |
LL | pub struct Masked;
   | ----------------- not an `extern crate` item
   |
   = note: read <https://doc.rust-lang.org/unstable-book/language-features/doc-masked.html> for more information

error: this attribute cannot be applied to an `extern crate self` item
  --> $DIR/invalid-doc-attr.rs:36:7
   |
LL | #[doc(masked)]
   |       ^^^^^^ not applicable on `extern crate self` items
LL |
LL | pub extern crate self as reexport;
   | --------------------------------- `extern crate self` defined here

error: this attribute can only be applied to an `extern crate` item
  --> $DIR/invalid-doc-attr.rs:4:8
   |
LL | #![doc(masked)]
   |        ^^^^^^ only applicable on `extern crate` items
   |
   = note: read <https://doc.rust-lang.org/unstable-book/language-features/doc-masked.html> for more information

error: this attribute can only be applied at the crate level
  --> $DIR/invalid-doc-attr.rs:19:11
   |
LL |     #[doc(test(no_crate_inject))]
   |           ^^^^^^^^^^^^^^^^^^^^^
   |
   = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information

error: this attribute can only be applied to a `use` item
  --> $DIR/invalid-doc-attr.rs:21:11
   |
LL |     #[doc(inline)]
   |           ^^^^^^ only applicable on `use` items
LL |
LL |     pub fn baz() {}
   |     ------------ not a `use` item
   |
   = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#inline-and-no_inline> for more information

error: aborting due to 9 previous errors

