summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_builtin_macros/src/asm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_builtin_macros/src/asm.rs')
-rw-r--r--compiler/rustc_builtin_macros/src/asm.rs18
1 files changed, 5 insertions, 13 deletions
diff --git a/compiler/rustc_builtin_macros/src/asm.rs b/compiler/rustc_builtin_macros/src/asm.rs
index 5217e317a..6187e4f51 100644
--- a/compiler/rustc_builtin_macros/src/asm.rs
+++ b/compiler/rustc_builtin_macros/src/asm.rs
@@ -371,24 +371,16 @@ fn parse_clobber_abi<'a>(p: &mut Parser<'a>, args: &mut AsmArgs) -> PResult<'a,
p.expect(&token::OpenDelim(Delimiter::Parenthesis))?;
if p.eat(&token::CloseDelim(Delimiter::Parenthesis)) {
- let err = p.sess.span_diagnostic.struct_span_err(
- p.token.span,
- "at least one abi must be provided as an argument to `clobber_abi`",
- );
- return Err(err);
+ return Err(p.sess.span_diagnostic.create_err(errors::NonABI { span: p.token.span }));
}
let mut new_abis = Vec::new();
- loop {
+ while !p.eat(&token::CloseDelim(Delimiter::Parenthesis)) {
match p.parse_str_lit() {
Ok(str_lit) => {
new_abis.push((str_lit.symbol_unescaped, str_lit.span));
}
Err(opt_lit) => {
- // If the non-string literal is a closing paren then it's the end of the list and is fine
- if p.eat(&token::CloseDelim(Delimiter::Parenthesis)) {
- break;
- }
let span = opt_lit.map_or(p.token.span, |lit| lit.span);
let mut err =
p.sess.span_diagnostic.struct_span_err(span, "expected string literal");
@@ -432,9 +424,9 @@ fn parse_reg<'a>(
ast::InlineAsmRegOrRegClass::Reg(symbol)
}
_ => {
- return Err(
- p.struct_span_err(p.token.span, "expected register class or explicit register")
- );
+ return Err(p.sess.create_err(errors::ExpectedRegisterClassOrExplicitRegister {
+ span: p.token.span,
+ }));
}
};
p.bump();