delay error for unsupported options
This commit is contained in:
parent
7ec06fc3b1
commit
e12d675739
5 changed files with 39 additions and 79 deletions
|
|
@ -347,15 +347,13 @@ fn validate_raw_asm_args<'a>(
|
|||
|
||||
for (symbol, option, span, full_span) in new_options {
|
||||
if !asm_macro.is_supported_option(option) {
|
||||
/*
|
||||
// Tool-only output
|
||||
p.dcx().emit_err(errors::AsmUnsupportedOption {
|
||||
// Tool-only output.
|
||||
dcx.emit_err(errors::AsmUnsupportedOption {
|
||||
span,
|
||||
symbol,
|
||||
full_span,
|
||||
macro_name: asm_macro.macro_name(),
|
||||
});
|
||||
*/
|
||||
} else if args.options.contains(option) {
|
||||
// Tool-only output.
|
||||
dcx.emit_err(errors::AsmOptAlreadyprovided { span, symbol, full_span });
|
||||
|
|
@ -500,16 +498,6 @@ fn parse_options<'a>(
|
|||
let full_span =
|
||||
if p.token == token::Comma { span.to(p.token.span) } else { span };
|
||||
|
||||
if !asm_macro.is_supported_option(option) {
|
||||
// Tool-only output.
|
||||
p.dcx().emit_err(errors::AsmUnsupportedOption {
|
||||
span,
|
||||
symbol: exp.kw,
|
||||
full_span,
|
||||
macro_name: asm_macro.macro_name(),
|
||||
});
|
||||
}
|
||||
|
||||
options.push((exp.kw, option, span, full_span));
|
||||
break 'blk;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,10 +96,8 @@ global_asm!("", options(FOO));
|
|||
//~^ ERROR expected one of
|
||||
global_asm!("", options(nomem FOO));
|
||||
//~^ ERROR expected one of
|
||||
//~| ERROR the `nomem` option cannot be used with `global_asm!`
|
||||
global_asm!("", options(nomem, FOO));
|
||||
//~^ ERROR expected one of
|
||||
//~| ERROR the `nomem` option cannot be used with `global_asm!`
|
||||
global_asm!("{}", options(), const FOO);
|
||||
global_asm!("", clobber_abi(FOO));
|
||||
//~^ ERROR expected string literal
|
||||
|
|
|
|||
|
|
@ -218,68 +218,56 @@ error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
|||
LL | global_asm!("", options(FOO));
|
||||
| ^^^ expected one of `)`, `att_syntax`, or `raw`
|
||||
|
||||
error: the `nomem` option cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:97:25
|
||||
|
|
||||
LL | global_asm!("", options(nomem FOO));
|
||||
| ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly
|
||||
|
||||
error: expected one of `)` or `,`, found `FOO`
|
||||
--> $DIR/parse-error.rs:97:31
|
||||
|
|
||||
LL | global_asm!("", options(nomem FOO));
|
||||
| ^^^ expected one of `)` or `,`
|
||||
|
||||
error: the `nomem` option cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:100:25
|
||||
|
|
||||
LL | global_asm!("", options(nomem, FOO));
|
||||
| ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly
|
||||
|
||||
error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
||||
--> $DIR/parse-error.rs:100:32
|
||||
--> $DIR/parse-error.rs:99:32
|
||||
|
|
||||
LL | global_asm!("", options(nomem, FOO));
|
||||
| ^^^ expected one of `)`, `att_syntax`, or `raw`
|
||||
|
||||
error: expected string literal
|
||||
--> $DIR/parse-error.rs:104:29
|
||||
--> $DIR/parse-error.rs:102:29
|
||||
|
|
||||
LL | global_asm!("", clobber_abi(FOO));
|
||||
| ^^^ not a string literal
|
||||
|
||||
error: expected one of `)` or `,`, found `FOO`
|
||||
--> $DIR/parse-error.rs:106:33
|
||||
--> $DIR/parse-error.rs:104:33
|
||||
|
|
||||
LL | global_asm!("", clobber_abi("C" FOO));
|
||||
| ^^^ expected one of `)` or `,`
|
||||
|
||||
error: expected string literal
|
||||
--> $DIR/parse-error.rs:108:34
|
||||
--> $DIR/parse-error.rs:106: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:110:19
|
||||
--> $DIR/parse-error.rs:108:19
|
||||
|
|
||||
LL | global_asm!("{}", clobber_abi("C"), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `clobber_abi` cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:112:28
|
||||
--> $DIR/parse-error.rs:110:28
|
||||
|
|
||||
LL | global_asm!("", options(), clobber_abi("C"));
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `clobber_abi` cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:114:30
|
||||
--> $DIR/parse-error.rs:112:30
|
||||
|
|
||||
LL | global_asm!("{}", options(), clobber_abi("C"), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: duplicate argument named `a`
|
||||
--> $DIR/parse-error.rs:116:35
|
||||
--> $DIR/parse-error.rs:114:35
|
||||
|
|
||||
LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
||||
| ------------- ^^^^^^^^^^^^^ duplicate argument
|
||||
|
|
@ -287,7 +275,7 @@ LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
|||
| previously here
|
||||
|
||||
error: argument never used
|
||||
--> $DIR/parse-error.rs:116:35
|
||||
--> $DIR/parse-error.rs:114:35
|
||||
|
|
||||
LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
||||
| ^^^^^^^^^^^^^ argument never used
|
||||
|
|
@ -295,19 +283,19 @@ LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
|||
= 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:119:28
|
||||
--> $DIR/parse-error.rs:117: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:121:30
|
||||
--> $DIR/parse-error.rs:119: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:123:13
|
||||
--> $DIR/parse-error.rs:121:13
|
||||
|
|
||||
LL | global_asm!(format!("{{{}}}", 0), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -315,7 +303,7 @@ LL | global_asm!(format!("{{{}}}", 0), const FOO);
|
|||
= note: this error originates in the macro `format` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: asm template must be a string literal
|
||||
--> $DIR/parse-error.rs:125:20
|
||||
--> $DIR/parse-error.rs:123:20
|
||||
|
|
||||
LL | global_asm!("{1}", format!("{{{}}}", 0), const FOO, const BAR);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -418,6 +406,6 @@ LL - let mut bar = 0;
|
|||
LL + const bar: /* Type */ = 0;
|
||||
|
|
||||
|
||||
error: aborting due to 59 previous errors
|
||||
error: aborting due to 57 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0435`.
|
||||
|
|
|
|||
|
|
@ -113,11 +113,9 @@ global_asm!("", options(FOO));
|
|||
global_asm!("", options(FOO,));
|
||||
//~^ ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
||||
global_asm!("", options(nomem FOO));
|
||||
//~^ ERROR the `nomem` option cannot be used with `global_asm!`
|
||||
//~| ERROR expected one of `)` or `,`, found `FOO`
|
||||
//~^ ERROR expected one of `)` or `,`, found `FOO`
|
||||
global_asm!("", options(nomem, FOO));
|
||||
//~^ ERROR the `nomem` option cannot be used with `global_asm!`
|
||||
//~| ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
||||
//~^ ERROR expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
||||
global_asm!("{}", options(), const FOO);
|
||||
global_asm!("", clobber_abi(FOO));
|
||||
//~^ ERROR expected string literal
|
||||
|
|
|
|||
|
|
@ -270,74 +270,62 @@ error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
|||
LL | global_asm!("", options(FOO,));
|
||||
| ^^^ expected one of `)`, `att_syntax`, or `raw`
|
||||
|
||||
error: the `nomem` option cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:115:25
|
||||
|
|
||||
LL | global_asm!("", options(nomem FOO));
|
||||
| ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly
|
||||
|
||||
error: expected one of `)` or `,`, found `FOO`
|
||||
--> $DIR/parse-error.rs:115:31
|
||||
|
|
||||
LL | global_asm!("", options(nomem FOO));
|
||||
| ^^^ expected one of `)` or `,`
|
||||
|
||||
error: the `nomem` option cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:118:25
|
||||
|
|
||||
LL | global_asm!("", options(nomem, FOO));
|
||||
| ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly
|
||||
|
||||
error: expected one of `)`, `att_syntax`, or `raw`, found `FOO`
|
||||
--> $DIR/parse-error.rs:118:32
|
||||
--> $DIR/parse-error.rs:117:32
|
||||
|
|
||||
LL | global_asm!("", options(nomem, FOO));
|
||||
| ^^^ expected one of `)`, `att_syntax`, or `raw`
|
||||
|
||||
error: expected string literal
|
||||
--> $DIR/parse-error.rs:122:29
|
||||
--> $DIR/parse-error.rs:120:29
|
||||
|
|
||||
LL | global_asm!("", clobber_abi(FOO));
|
||||
| ^^^ not a string literal
|
||||
|
||||
error: expected one of `)` or `,`, found `FOO`
|
||||
--> $DIR/parse-error.rs:124:33
|
||||
--> $DIR/parse-error.rs:122:33
|
||||
|
|
||||
LL | global_asm!("", clobber_abi("C" FOO));
|
||||
| ^^^ expected one of `)` or `,`
|
||||
|
||||
error: expected string literal
|
||||
--> $DIR/parse-error.rs:126:34
|
||||
--> $DIR/parse-error.rs:124: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:128:19
|
||||
--> $DIR/parse-error.rs:126:19
|
||||
|
|
||||
LL | global_asm!("{}", clobber_abi("C"), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `clobber_abi` cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:130:28
|
||||
--> $DIR/parse-error.rs:128:28
|
||||
|
|
||||
LL | global_asm!("", options(), clobber_abi("C"));
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `clobber_abi` cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:132:30
|
||||
--> $DIR/parse-error.rs:130:30
|
||||
|
|
||||
LL | global_asm!("{}", options(), clobber_abi("C"), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: `clobber_abi` cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:134:17
|
||||
--> $DIR/parse-error.rs:132:17
|
||||
|
|
||||
LL | global_asm!("", clobber_abi("C"), clobber_abi("C"));
|
||||
| ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: duplicate argument named `a`
|
||||
--> $DIR/parse-error.rs:136:35
|
||||
--> $DIR/parse-error.rs:134:35
|
||||
|
|
||||
LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
||||
| ------------- ^^^^^^^^^^^^^ duplicate argument
|
||||
|
|
@ -345,7 +333,7 @@ LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
|||
| previously here
|
||||
|
||||
error: argument never used
|
||||
--> $DIR/parse-error.rs:136:35
|
||||
--> $DIR/parse-error.rs:134:35
|
||||
|
|
||||
LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
||||
| ^^^^^^^^^^^^^ argument never used
|
||||
|
|
@ -353,19 +341,19 @@ LL | global_asm!("{a}", a = const FOO, a = const BAR);
|
|||
= 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:139:28
|
||||
--> $DIR/parse-error.rs:137: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:141:30
|
||||
--> $DIR/parse-error.rs:139: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:143:13
|
||||
--> $DIR/parse-error.rs:141:13
|
||||
|
|
||||
LL | global_asm!(format!("{{{}}}", 0), const FOO);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -373,7 +361,7 @@ LL | global_asm!(format!("{{{}}}", 0), const FOO);
|
|||
= note: this error originates in the macro `format` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: asm template must be a string literal
|
||||
--> $DIR/parse-error.rs:145:20
|
||||
--> $DIR/parse-error.rs:143:20
|
||||
|
|
||||
LL | global_asm!("{1}", format!("{{{}}}", 0), const FOO, const BAR);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -381,37 +369,37 @@ LL | global_asm!("{1}", format!("{{{}}}", 0), const FOO, const BAR);
|
|||
= note: this error originates in the macro `format` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: the `in` operand cannot be used with `global_asm!`
|
||||
--> $DIR/parse-error.rs:148:19
|
||||
--> $DIR/parse-error.rs:146: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:150:19
|
||||
--> $DIR/parse-error.rs:148: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:152:19
|
||||
--> $DIR/parse-error.rs:150: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:154:19
|
||||
--> $DIR/parse-error.rs:152: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:156:19
|
||||
--> $DIR/parse-error.rs:154: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:158:19
|
||||
--> $DIR/parse-error.rs:156:19
|
||||
|
|
||||
LL | global_asm!("{}", label(reg));
|
||||
| ^^^^^ the `label` operand is not meaningful for global-scoped inline assembly, remove it
|
||||
|
|
@ -476,6 +464,6 @@ LL - let mut bar = 0;
|
|||
LL + const bar: /* Type */ = 0;
|
||||
|
|
||||
|
||||
error: aborting due to 72 previous errors
|
||||
error: aborting due to 70 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0435`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue