Rollup merge of #88209 - Amanieu:asm_in_underscore, r=nagisa
Improve error message when _ is used for in/inout asm operands As suggested by ```@Commeownist``` in https://github.com/rust-lang/rust/issues/72016#issuecomment-903102415.
This commit is contained in:
commit
3af42a897f
3 changed files with 61 additions and 25 deletions
|
@ -117,6 +117,10 @@ fn parse_args<'a>(
|
|||
let mut explicit_reg = false;
|
||||
let op = if !is_global_asm && p.eat_keyword(kw::In) {
|
||||
let reg = parse_reg(&mut p, &mut explicit_reg)?;
|
||||
if p.eat_keyword(kw::Underscore) {
|
||||
let err = ecx.struct_span_err(p.token.span, "_ cannot be used for input operands");
|
||||
return Err(err);
|
||||
}
|
||||
let expr = p.parse_expr()?;
|
||||
ast::InlineAsmOperand::In { reg, expr }
|
||||
} else if !is_global_asm && p.eat_keyword(sym::out) {
|
||||
|
@ -129,6 +133,10 @@ fn parse_args<'a>(
|
|||
ast::InlineAsmOperand::Out { reg, expr, late: true }
|
||||
} else if !is_global_asm && p.eat_keyword(sym::inout) {
|
||||
let reg = parse_reg(&mut p, &mut explicit_reg)?;
|
||||
if p.eat_keyword(kw::Underscore) {
|
||||
let err = ecx.struct_span_err(p.token.span, "_ cannot be used for input operands");
|
||||
return Err(err);
|
||||
}
|
||||
let expr = p.parse_expr()?;
|
||||
if p.eat(&token::FatArrow) {
|
||||
let out_expr =
|
||||
|
@ -139,6 +147,10 @@ fn parse_args<'a>(
|
|||
}
|
||||
} else if !is_global_asm && p.eat_keyword(sym::inlateout) {
|
||||
let reg = parse_reg(&mut p, &mut explicit_reg)?;
|
||||
if p.eat_keyword(kw::Underscore) {
|
||||
let err = ecx.struct_span_err(p.token.span, "_ cannot be used for input operands");
|
||||
return Err(err);
|
||||
}
|
||||
let expr = p.parse_expr()?;
|
||||
if p.eat(&token::FatArrow) {
|
||||
let out_expr =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue