about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2020-06-14 14:17:51 -0700
committerJosh Triplett <josh@joshtriplett.org>2020-06-14 14:17:51 -0700
commit840176ab6f9fdda0878bd0ba1297437b506c6b7c (patch)
tree7e30010316c823ae752f8850265fb45d337ea165 /src
parent4fb54ed484e2239a3e9eff3be17df00d2a162be3 (diff)
downloadrust-840176ab6f9fdda0878bd0ba1297437b506c6b7c.tar.gz
rust-840176ab6f9fdda0878bd0ba1297437b506c6b7c.zip
asm: Unify pseudo-keyword parsing using `eat`, rather than a final `expect`
Currently, `asm!` parsing uses an `expect` for the last parsed
pseudo-keyword (`sym`), which makes it difficult to extend without
simultaneously refactoring. Use `eat` for the last pseudo-keyword, and
then add an `else` that fails parsing. No change to error output.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_builtin_macros/asm.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/librustc_builtin_macros/asm.rs b/src/librustc_builtin_macros/asm.rs
index 480ee97f205..afe2231cec6 100644
--- a/src/librustc_builtin_macros/asm.rs
+++ b/src/librustc_builtin_macros/asm.rs
@@ -135,8 +135,7 @@ fn parse_args<'a>(
         } else if p.eat(&token::Ident(kw::Const, false)) {
             let expr = p.parse_expr()?;
             ast::InlineAsmOperand::Const { expr }
-        } else {
-            p.expect(&token::Ident(sym::sym, false))?;
+        } else if p.eat(&token::Ident(sym::sym, false)) {
             let expr = p.parse_expr()?;
             match expr.kind {
                 ast::ExprKind::Path(..) => {}
@@ -147,6 +146,8 @@ fn parse_args<'a>(
                 }
             }
             ast::InlineAsmOperand::Sym { expr }
+        } else {
+            return Err(p.expect_one_of(&[], &[]).unwrap_err());
         };
 
         let span = span_start.to(p.prev_token.span);