diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-03-10 11:53:16 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-03-12 10:25:03 +0300 |
| commit | 79c3651988185bb762e9d59d8c74350416cd669f (patch) | |
| tree | 976bb1ed4ff1b955310d3387ba2b2b485746348e /src/libsyntax | |
| parent | 18229bb1ad197fcc28ed2ff399c738bb500a3f0d (diff) | |
| download | rust-79c3651988185bb762e9d59d8c74350416cd669f.tar.gz rust-79c3651988185bb762e9d59d8c74350416cd669f.zip | |
syntax: Optimize `maybe_whole`/`maybe_whole_expr` slightly
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index ba948d41c7a..bc7cb0403ef 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -118,23 +118,22 @@ enum BlockMode { /// `token::Interpolated` tokens. macro_rules! maybe_whole_expr { ($p:expr) => { - if let token::Interpolated(nt) = $p.token.clone() { - match *nt { - token::NtExpr(ref e) | token::NtLiteral(ref e) => { + if let token::Interpolated(nt) = &$p.token { + match &**nt { + token::NtExpr(e) | token::NtLiteral(e) => { + let e = e.clone(); $p.bump(); - return Ok((*e).clone()); + return Ok(e); } - token::NtPath(ref path) => { + token::NtPath(path) => { + let path = path.clone(); $p.bump(); - let span = $p.span; - let kind = ExprKind::Path(None, (*path).clone()); - return Ok($p.mk_expr(span, kind, ThinVec::new())); + return Ok($p.mk_expr($p.span, ExprKind::Path(None, path), ThinVec::new())); } - token::NtBlock(ref block) => { + token::NtBlock(block) => { + let block = block.clone(); $p.bump(); - let span = $p.span; - let kind = ExprKind::Block((*block).clone(), None); - return Ok($p.mk_expr(span, kind, ThinVec::new())); + return Ok($p.mk_expr($p.span, ExprKind::Block(block, None), ThinVec::new())); } _ => {}, }; @@ -145,8 +144,9 @@ macro_rules! maybe_whole_expr { /// As maybe_whole_expr, but for things other than expressions macro_rules! maybe_whole { ($p:expr, $constructor:ident, |$x:ident| $e:expr) => { - if let token::Interpolated(nt) = $p.token.clone() { - if let token::$constructor($x) = (*nt).clone() { + if let token::Interpolated(nt) = &$p.token { + if let token::$constructor(x) = &**nt { + let $x = x.clone(); $p.bump(); return Ok($e); } |
