error: this attribute can only be applied at the crate level
  --> $DIR/invalid-doc-attr.rs:4:7
   |
LL | #[doc(test(no_crate_inject))]
   |       ^^^^^^^^^^^^^^^^^^^^^
   |
note: the lint level is defined here
  --> $DIR/invalid-doc-attr.rs:2:9
   |
LL | #![deny(warnings)]
   |         ^^^^^^^^
   = note: `#[deny(invalid_doc_attributes)]` implied by `#[deny(warnings)]`
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>
   = note: read https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level for more information
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:9:7
   |
LL | #[doc(inline)]
   |       ^^^^^^ only applicable on `use` items
...
LL | pub fn foo() {}
   | ------------ not a `use` item
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>
   = note: read https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#docno_inlinedocinline for more information

error: this attribute can only be applied at the crate level
  --> $DIR/invalid-doc-attr.rs:15:12
   |
LL |     #![doc(test(no_crate_inject))]
   |            ^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>
   = 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:28: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 at the crate level
  --> $DIR/invalid-doc-attr.rs:19:11
   |
LL |     #[doc(test(no_crate_inject))]
   |           ^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>
   = 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:22:11
   |
LL |     #[doc(inline)]
   |           ^^^^^^ only applicable on `use` items
...
LL |     pub fn baz() {}
   |     ------------ not a `use` item
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>
   = note: read https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#docno_inlinedocinline for more information

error: aborting due to 6 previous errors

