diff options
| author | Takayuki Maeda <takoyaki0316@gmail.com> | 2022-03-18 16:56:43 +0900 |
|---|---|---|
| committer | Takayuki Maeda <takoyaki0316@gmail.com> | 2022-03-18 16:56:43 +0900 |
| commit | 201a86046c3b08820c6b44b85c640c187d87756b (patch) | |
| tree | 4578c3397723f45c5d2b4b940854f17d783ea76d /compiler/rustc_parse/src/parser/expr.rs | |
| parent | d6f3a4ecb48ead838638e902f2fa4e5f3059779b (diff) | |
| download | rust-201a86046c3b08820c6b44b85c640c187d87756b.tar.gz rust-201a86046c3b08820c6b44b85c640c187d87756b.zip | |
use `self.create_snapshot_for_diagnostic` instead of `self.clone()`
Diffstat (limited to 'compiler/rustc_parse/src/parser/expr.rs')
| -rw-r--r-- | compiler/rustc_parse/src/parser/expr.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index ef006d5fcda..a907f50a11b 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -1,9 +1,10 @@ +use super::diagnostics::SnapshotParser; use super::pat::{CommaRecoveryMode, RecoverColon, RecoverComma, PARAM_EXPECTED}; use super::ty::{AllowPlus, RecoverQPath, RecoverReturnSign}; use super::{ - AttrWrapper, BlockMode, ClosureSpans, ForceCollect, Parser, PathStyle, Restrictions, TokenType, + AttrWrapper, BlockMode, ClosureSpans, ForceCollect, Parser, PathStyle, Restrictions, + SemiColonMode, SeqSep, TokenExpectType, TokenType, TrailingToken, }; -use super::{SemiColonMode, SeqSep, TokenExpectType, TrailingToken}; use crate::maybe_recover_from_interpolated_ty_qpath; use ast::token::DelimToken; @@ -1105,7 +1106,7 @@ impl<'a> Parser<'a> { let snapshot = if self.token.kind == token::OpenDelim(token::Paren) && self.look_ahead_type_ascription_as_field() { - Some((self.clone(), fun.kind.clone())) + Some((self.create_snapshot_for_diagnostic(), fun.kind.clone())) } else { None }; @@ -1130,7 +1131,7 @@ impl<'a> Parser<'a> { lo: Span, open_paren: Span, seq: &mut PResult<'a, P<Expr>>, - snapshot: Option<(Self, ExprKind)>, + snapshot: Option<(SnapshotParser<'a>, ExprKind)>, ) -> Option<P<Expr>> { match (seq.as_mut(), snapshot) { (Err(err), Some((mut snapshot, ExprKind::Path(None, path)))) => { @@ -1140,7 +1141,7 @@ impl<'a> Parser<'a> { Ok((fields, ..)) if snapshot.eat(&token::CloseDelim(token::Paren)) => { // We are certain we have `Enum::Foo(a: 3, b: 4)`, suggest // `Enum::Foo { a: 3, b: 4 }` or `Enum::Foo(3, 4)`. - *self = snapshot; + self.restore_snapshot(snapshot); let close_paren = self.prev_token.span; let span = lo.to(self.prev_token.span); if !fields.is_empty() { |
