error: requires at least a template string argument
  --> $DIR/parse-error.rs:12:9
   |
LL |         asm!();
   |         ^^^^^^

error: asm template must be a string literal
  --> $DIR/parse-error.rs:14:14
   |
LL |         asm!(foo);
   |              ^^^

error: expected token: `,`
  --> $DIR/parse-error.rs:16:19
   |
LL |         asm!("{}" foo);
   |                   ^^^ expected `,`

error: expected operand, clobber_abi, options, or additional template string
  --> $DIR/parse-error.rs:18:20
   |
LL |         asm!("{}", foo);
   |                    ^^^ expected operand, clobber_abi, options, or additional template string

error: expected `(`, found `foo`
  --> $DIR/parse-error.rs:20:23
   |
LL |         asm!("{}", in foo);
   |                       ^^^ expected `(`

error: expected `)`, found `foo`
  --> $DIR/parse-error.rs:22:27
   |
LL |         asm!("{}", in(reg foo));
   |                           ^^^ expected `)`

error: expected expression, found end of macro arguments
  --> $DIR/parse-error.rs:24:27
   |
LL |         asm!("{}", in(reg));
   |                           ^ expected expression

error: expected register class or explicit register
  --> $DIR/parse-error.rs:26:26
   |
LL |         asm!("{}", inout(=) foo => bar);
   |                          ^

error: expected expression, found end of macro arguments
  --> $DIR/parse-error.rs:28:37
   |
LL |         asm!("{}", inout(reg) foo =>);
   |                                     ^ expected expression

error: expected one of `!`, `,`, `.`, `::`, `?`, `{`, or an operator, found `=>`
  --> $DIR/parse-error.rs:30:32
   |
LL |         asm!("{}", in(reg) foo => bar);
   |                                ^^ expected one of 7 possible tokens

error: expected a path for argument to `sym`
  --> $DIR/parse-error.rs:32:24
   |
LL |         asm!("{}", sym foo + bar);
   |                        ^^^^^^^^^

error: expected one of `)`, `att_syntax`, `may_unwind`, `nomem`, `noreturn`, `nostack`, `preserves_flags`, `pure`, `raw`, or `readonly`, found `foo`
  --> $DIR/parse-error.rs:34:26
   |
LL |         asm!("", options(foo));
   |                          ^^^ expected one of 10 possible tokens

error: expected one of `)` or `,`, found `foo`
  --> $DIR/parse-error.rs:36:32
   |
LL |         asm!("", options(nomem foo));
   |                                ^^^ expected one of `)` or `,`

error: expected one of `)`, `att_syntax`, `may_unwind`, `nomem`, `noreturn`, `nostack`, `preserves_flags`, `pure`, `raw`, or `readonly`, found `foo`
  --> $DIR/parse-error.rs:38:33
   |
LL |         asm!("", options(nomem, foo));
   |                                 ^^^ expected one of 10 possible tokens

error: at least one abi must be provided as an argument to `clobber_abi`
  --> $DIR/parse-error.rs:45:30
   |
LL |         asm!("", clobber_abi());
   |                              ^

error: expected string literal
  --> $DIR/parse-error.rs:47:30
   |
LL |         asm!("", clobber_abi(foo));
   |                              ^^^ not a string literal

error: expected one of `)` or `,`, found `foo`
  --> $DIR/parse-error.rs:49:34
   |
LL |         asm!("", clobber_abi("C" foo));
   |                                  ^^^ expected one of `)` or `,`

error: expected string literal
  --> $DIR/parse-error.rs:51:35
   |
LL |         asm!("", clobber_abi("C", foo));
   |                                   ^^^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:53:30
   |
LL |         asm!("", clobber_abi(1));
   |                              ^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:55:30
   |
LL |         asm!("", clobber_abi(()));
   |                              ^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:57:30
   |
LL |         asm!("", clobber_abi(uwu));
   |                              ^^^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:59:30
   |
LL |         asm!("", clobber_abi({}));
   |                              ^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:61:30
   |
LL |         asm!("", clobber_abi(loop {}));
   |                              ^^^^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:63:30
   |
LL |         asm!("", clobber_abi(if));
   |                              ^^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:65:30
   |
LL |         asm!("", clobber_abi(do));
   |                              ^^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:67:30
   |
LL |         asm!("", clobber_abi(<));
   |                              ^ not a string literal

error: expected string literal
  --> $DIR/parse-error.rs:69:30
   |
LL |         asm!("", clobber_abi(.));
   |                              ^ not a string literal

error: duplicate argument named `a`
  --> $DIR/parse-error.rs:77:36
   |
LL |         asm!("{a}", a = const foo, a = const bar);
   |                     -------------  ^^^^^^^^^^^^^ duplicate argument
   |                     |
   |                     previously here

error: argument never used
  --> $DIR/parse-error.rs:77:36
   |
LL |         asm!("{a}", a = const foo, a = const bar);
   |                                    ^^^^^^^^^^^^^ argument never used
   |
   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {1} */"`

error: expected one of `#`, `clobber_abi`, `const`, `in`, `inlateout`, `inout`, `label`, `lateout`, `options`, `out`, or `sym`, found `""`
  --> $DIR/parse-error.rs:83:29
   |
LL |         asm!("", options(), "");
   |                             ^^ expected one of 11 possible tokens

error: expected one of `#`, `clobber_abi`, `const`, `in`, `inlateout`, `inout`, `label`, `lateout`, `options`, `out`, or `sym`, found `"{}"`
  --> $DIR/parse-error.rs:85:33
   |
LL |         asm!("{}", in(reg) foo, "{}", out(reg) foo);
   |                                 ^^^^ expected one of 11 possible tokens

error: asm template must be a string literal
  --> $DIR/parse-error.rs:87:14
   |
LL |         asm!(format!("{{{}}}", 0), in(reg) foo);
   |              ^^^^^^^^^^^^^^^^^^^^

error: asm template must be a string literal
  --> $DIR/parse-error.rs:89:21
   |
LL |         asm!("{1}", format!("{{{}}}", 0), in(reg) foo, out(reg) bar);
   |                     ^^^^^^^^^^^^^^^^^^^^

error: _ cannot be used for input operands
  --> $DIR/parse-error.rs:91:28
   |
LL |         asm!("{}", in(reg) _);
   |                            ^

error: _ cannot be used for input operands
  --> $DIR/parse-error.rs:93:31
   |
LL |         asm!("{}", inout(reg) _);
   |                               ^

error: _ cannot be used for input operands
  --> $DIR/parse-error.rs:95:35
   |
LL |         asm!("{}", inlateout(reg) _);
   |                                   ^

error: requires at least a template string argument
  --> $DIR/parse-error.rs:102:1
   |
LL | global_asm!();
   | ^^^^^^^^^^^^^

error: asm template must be a string literal
  --> $DIR/parse-error.rs:104:13
   |
LL | global_asm!(FOO);
   |             ^^^

error: expected token: `,`
  --> $DIR/parse-error.rs:106:18
   |
LL | global_asm!("{}" FOO);
   |                  ^^^ expected `,`

error: expected operand, options, or additional template string
  --> $DIR/parse-error.rs:108:19
   |
LL | global_asm!("{}", FOO);
   |                   ^^^ expected operand, options, or additional template string

error: expected expression, found end of macro arguments
  --> $DIR/parse-error.rs:110:24
   |
LL | global_asm!("{}", const);
   |                        ^ expected expression

error: expected one of `,`, `.`, `?`, or an operator, found `FOO`
  --> $DIR/parse-error.rs:112:30
   |
LL | global_asm!("{}", const(reg) FOO);
   |                              ^^^ expected one of `,`, `.`, `?`, or an operator

error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
  --> $DIR/parse-error.rs:114:25
   |
LL | global_asm!("", options(FOO));
   |                         ^^^ expected one of `)`, `att_syntax`, or `raw`

error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
  --> $DIR/parse-error.rs:116:25
   |
LL | global_asm!("", options(FOO,));
   |                         ^^^ expected one of `)`, `att_syntax`, or `raw`

error: expected one of `)` or `,`, found `FOO`
  --> $DIR/parse-error.rs:118:31
   |
LL | global_asm!("", options(nomem FOO));
   |                               ^^^ expected one of `)` or `,`

error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
  --> $DIR/parse-error.rs:120:32
   |
LL | global_asm!("", options(nomem, FOO));
   |                                ^^^ expected one of `)`, `att_syntax`, or `raw`

error: expected string literal
  --> $DIR/parse-error.rs:123:29
   |
LL | global_asm!("", clobber_abi(FOO));
   |                             ^^^ not a string literal

error: expected one of `)` or `,`, found `FOO`
  --> $DIR/parse-error.rs:125:33
   |
LL | global_asm!("", clobber_abi("C" FOO));
   |                                 ^^^ expected one of `)` or `,`

error: expected string literal
  --> $DIR/parse-error.rs:127:34
   |
LL | global_asm!("", clobber_abi("C", FOO));
   |                                  ^^^ not a string literal

error: `clobber_abi` cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:129:19
   |
LL | global_asm!("{}", clobber_abi("C"), const FOO);
   |                   ^^^^^^^^^^^^^^^^

error: `clobber_abi` cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:131:28
   |
LL | global_asm!("", options(), clobber_abi("C"));
   |                            ^^^^^^^^^^^^^^^^

error: `clobber_abi` cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:133:30
   |
LL | global_asm!("{}", options(), clobber_abi("C"), const FOO);
   |                              ^^^^^^^^^^^^^^^^

error: `clobber_abi` cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:135:17
   |
LL | global_asm!("", clobber_abi("C"), clobber_abi("C"));
   |                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^

error: duplicate argument named `a`
  --> $DIR/parse-error.rs:137:35
   |
LL | global_asm!("{a}", a = const FOO, a = const BAR);
   |                    -------------  ^^^^^^^^^^^^^ duplicate argument
   |                    |
   |                    previously here

error: argument never used
  --> $DIR/parse-error.rs:137:35
   |
LL | global_asm!("{a}", a = const FOO, a = const BAR);
   |                                   ^^^^^^^^^^^^^ argument never used
   |
   = help: if this argument is intentionally unused, consider using it in an asm comment: `"/* {1} */"`

error: expected one of `#`, `clobber_abi`, `const`, `options`, or `sym`, found `""`
  --> $DIR/parse-error.rs:140:28
   |
LL | global_asm!("", options(), "");
   |                            ^^ expected one of `#`, `clobber_abi`, `const`, `options`, or `sym`

error: expected one of `#`, `clobber_abi`, `const`, `options`, or `sym`, found `"{}"`
  --> $DIR/parse-error.rs:142:30
   |
LL | global_asm!("{}", const FOO, "{}", const FOO);
   |                              ^^^^ expected one of `#`, `clobber_abi`, `const`, `options`, or `sym`

error: asm template must be a string literal
  --> $DIR/parse-error.rs:144:13
   |
LL | global_asm!(format!("{{{}}}", 0), const FOO);
   |             ^^^^^^^^^^^^^^^^^^^^

error: asm template must be a string literal
  --> $DIR/parse-error.rs:146:20
   |
LL | global_asm!("{1}", format!("{{{}}}", 0), const FOO, const BAR);
   |                    ^^^^^^^^^^^^^^^^^^^^

error: the `in` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:149:19
   |
LL | global_asm!("{}", in(reg));
   |                   ^^ the `in` operand is not meaningful for global-scoped inline assembly, remove it

error: the `out` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:151:19
   |
LL | global_asm!("{}", out(reg));
   |                   ^^^ the `out` operand is not meaningful for global-scoped inline assembly, remove it

error: the `lateout` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:153:19
   |
LL | global_asm!("{}", lateout(reg));
   |                   ^^^^^^^ the `lateout` operand is not meaningful for global-scoped inline assembly, remove it

error: the `inout` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:155:19
   |
LL | global_asm!("{}", inout(reg));
   |                   ^^^^^ the `inout` operand is not meaningful for global-scoped inline assembly, remove it

error: the `inlateout` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:157:19
   |
LL | global_asm!("{}", inlateout(reg));
   |                   ^^^^^^^^^ the `inlateout` operand is not meaningful for global-scoped inline assembly, remove it

error: the `label` operand cannot be used with `global_asm!`
  --> $DIR/parse-error.rs:159:19
   |
LL | global_asm!("{}", label(reg));
   |                   ^^^^^ the `label` operand is not meaningful for global-scoped inline assembly, remove it

error[E0435]: attempt to use a non-constant value in a constant
  --> $DIR/parse-error.rs:40:37
   |
LL |         asm!("{}", options(), const foo);
   |                                     ^^^ non-constant value
   |
help: consider using `const` instead of `let`
   |
LL -     let mut foo = 0;
LL +     const foo: /* Type */ = 0;
   |

error[E0435]: attempt to use a non-constant value in a constant
  --> $DIR/parse-error.rs:72:44
   |
LL |         asm!("{}", clobber_abi("C"), const foo);
   |                                            ^^^ non-constant value
   |
help: consider using `const` instead of `let`
   |
LL -     let mut foo = 0;
LL +     const foo: /* Type */ = 0;
   |

error[E0435]: attempt to use a non-constant value in a constant
  --> $DIR/parse-error.rs:75:55
   |
LL |         asm!("{}", options(), clobber_abi("C"), const foo);
   |                                                       ^^^ non-constant value
   |
help: consider using `const` instead of `let`
   |
LL -     let mut foo = 0;
LL +     const foo: /* Type */ = 0;
   |

error[E0435]: attempt to use a non-constant value in a constant
  --> $DIR/parse-error.rs:77:31
   |
LL |         asm!("{a}", a = const foo, a = const bar);
   |                               ^^^ non-constant value
   |
help: consider using `const` instead of `let`
   |
LL -     let mut foo = 0;
LL +     const foo: /* Type */ = 0;
   |

error[E0435]: attempt to use a non-constant value in a constant
  --> $DIR/parse-error.rs:77:46
   |
LL |         asm!("{a}", a = const foo, a = const bar);
   |                                              ^^^ non-constant value
   |
help: consider using `const` instead of `let`
   |
LL -     let mut bar = 0;
LL +     const bar: /* Type */ = 0;
   |

error: aborting due to 70 previous errors

For more information about this error, try `rustc --explain E0435`.
