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(),,]]
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(),,}]
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

