error: malformed `cfg_attr` attribute input
  --> $DIR/cfg-attr-parse.rs:4:1
   |
LL | #[cfg_attr()]
   | ^^^^^^^^^^^^^
   |
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>
help: missing condition and attribute
   |
LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
   | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: expected `,`, found end of `cfg_attr` input
  --> $DIR/cfg-attr-parse.rs:8:17
   |
LL | #[cfg_attr(all())]
   |                 ^ expected `,`
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: expected identifier, found `,`
  --> $DIR/cfg-attr-parse.rs:16:18
   |
LL | #[cfg_attr(all(),,)]
   |                  ^ expected identifier
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: expected identifier, found `,`
  --> $DIR/cfg-attr-parse.rs:28:28
   |
LL | #[cfg_attr(all(), must_use,,)]
   |                            ^ expected identifier
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: expected identifier, found `,`
  --> $DIR/cfg-attr-parse.rs:40:40
   |
LL | #[cfg_attr(all(), must_use, deprecated,,)]
   |                                        ^ expected identifier
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: wrong `cfg_attr` delimiters
  --> $DIR/cfg-attr-parse.rs:44:11
   |
LL | #[cfg_attr[all(),,]]
   |           ^^^^^^^^^
   |
help: the delimiters should be `(` and `)`
   |
LL | #[cfg_attr(all(),,)]
   |           ~       ~

error: expected identifier, found `,`
  --> $DIR/cfg-attr-parse.rs:44:18
   |
LL | #[cfg_attr[all(),,]]
   |                  ^ expected identifier
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: wrong `cfg_attr` delimiters
  --> $DIR/cfg-attr-parse.rs:50:11
   |
LL | #[cfg_attr{all(),,}]
   |           ^^^^^^^^^
   |
help: the delimiters should be `(` and `)`
   |
LL | #[cfg_attr(all(),,)]
   |           ~       ~

error: expected identifier, found `,`
  --> $DIR/cfg-attr-parse.rs:50:18
   |
LL | #[cfg_attr{all(),,}]
   |                  ^ expected identifier
   |
   = help: the valid syntax is `#[cfg_attr(condition, attribute, other_attribute, ...)]`
   = note: for more information, visit <https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute>

error: aborting due to 9 previous errors

