diff options
| author | Josh Triplett <josh@joshtriplett.org> | 2020-06-14 14:17:51 -0700 |
|---|---|---|
| committer | Josh Triplett <josh@joshtriplett.org> | 2020-06-14 14:17:51 -0700 |
| commit | 840176ab6f9fdda0878bd0ba1297437b506c6b7c (patch) | |
| tree | 7e30010316c823ae752f8850265fb45d337ea165 /src | |
| parent | 4fb54ed484e2239a3e9eff3be17df00d2a162be3 (diff) | |
| download | rust-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.rs | 5 |
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); |
