Skip to content

Commit a4af9d1

Browse files
committed
parse_pat_with_range_pat: remove unnecessary assignments.
1 parent 72f8043 commit a4af9d1

File tree

1 file changed

+25
-29
lines changed
  • src/libsyntax/parse/parser

1 file changed

+25
-29
lines changed

src/libsyntax/parse/parser/pat.rs

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ impl<'a> Parser<'a> {
108108
maybe_whole!(self, NtPat, |x| x);
109109

110110
let lo = self.token.span;
111-
let pat;
112-
match self.token.kind {
111+
let pat = match self.token.kind {
113112
token::BinOp(token::And) | token::AndAnd => {
114113
// Parse &pat / &mut pat
115114
self.expect_and()?;
@@ -120,49 +119,48 @@ impl<'a> Parser<'a> {
120119
return Err(err);
121120
}
122121
let subpat = self.parse_pat_with_range_pat(false, expected)?;
123-
pat = PatKind::Ref(subpat, mutbl);
122+
PatKind::Ref(subpat, mutbl)
124123
}
125124
token::OpenDelim(token::Paren) => {
126125
// Parse a tuple or parenthesis pattern.
127126
let (fields, trailing_comma) = self.parse_paren_comma_seq(|p| p.parse_pat(None))?;
128127

129128
// Here, `(pat,)` is a tuple pattern.
130129
// For backward compatibility, `(..)` is a tuple pattern as well.
131-
pat = if fields.len() == 1 && !(trailing_comma || fields[0].is_rest()) {
130+
if fields.len() == 1 && !(trailing_comma || fields[0].is_rest()) {
132131
PatKind::Paren(fields.into_iter().nth(0).unwrap())
133132
} else {
134133
PatKind::Tuple(fields)
135-
};
134+
}
136135
}
137136
token::OpenDelim(token::Bracket) => {
138137
// Parse `[pat, pat,...]` as a slice pattern.
139-
let (slice, _) = self.parse_delim_comma_seq(token::Bracket, |p| p.parse_pat(None))?;
140-
pat = PatKind::Slice(slice);
138+
PatKind::Slice(self.parse_delim_comma_seq(token::Bracket, |p| p.parse_pat(None))?.0)
141139
}
142140
token::DotDot => {
143141
self.bump();
144-
pat = if self.is_pat_range_end_start() {
142+
if self.is_pat_range_end_start() {
145143
// Parse `..42` for recovery.
146144
self.parse_pat_range_to(RangeEnd::Excluded, "..")?
147145
} else {
148146
// A rest pattern `..`.
149147
PatKind::Rest
150-
};
148+
}
151149
}
152150
token::DotDotEq => {
153151
// Parse `..=42` for recovery.
154152
self.bump();
155-
pat = self.parse_pat_range_to(RangeEnd::Included(RangeSyntax::DotDotEq), "..=")?;
153+
self.parse_pat_range_to(RangeEnd::Included(RangeSyntax::DotDotEq), "..=")?
156154
}
157155
token::DotDotDot => {
158156
// Parse `...42` for recovery.
159157
self.bump();
160-
pat = self.parse_pat_range_to(RangeEnd::Included(RangeSyntax::DotDotDot), "...")?;
158+
self.parse_pat_range_to(RangeEnd::Included(RangeSyntax::DotDotDot), "...")?
161159
}
162160
// At this point, token != &, &&, (, [
163161
_ => if self.eat_keyword(kw::Underscore) {
164162
// Parse _
165-
pat = PatKind::Wild;
163+
PatKind::Wild
166164
} else if self.eat_keyword(kw::Mut) {
167165
// Parse mut ident @ pat / mut ref ident @ pat
168166
let mutref_span = self.prev_span.to(self.token.span);
@@ -179,22 +177,20 @@ impl<'a> Parser<'a> {
179177
} else {
180178
BindingMode::ByValue(Mutability::Mutable)
181179
};
182-
pat = self.parse_pat_ident(binding_mode)?;
180+
self.parse_pat_ident(binding_mode)?
183181
} else if self.eat_keyword(kw::Ref) {
184182
// Parse ref ident @ pat / ref mut ident @ pat
185183
let mutbl = self.parse_mutability();
186-
pat = self.parse_pat_ident(BindingMode::ByRef(mutbl))?;
184+
self.parse_pat_ident(BindingMode::ByRef(mutbl))?
187185
} else if self.eat_keyword(kw::Box) {
188-
// Parse box pat
189-
let subpat = self.parse_pat_with_range_pat(false, None)?;
190-
pat = PatKind::Box(subpat);
186+
// Parse `box pat`
187+
PatKind::Box(self.parse_pat_with_range_pat(false, None)?)
191188
} else if self.token.is_ident() && !self.token.is_reserved_ident() &&
192189
self.parse_as_ident() {
193-
// Parse ident @ pat
190+
// Parse `ident @ pat`
194191
// This can give false positives and parse nullary enums,
195-
// they are dealt with later in resolve
196-
let binding_mode = BindingMode::ByValue(Mutability::Immutable);
197-
pat = self.parse_pat_ident(binding_mode)?;
192+
// they are dealt with later in resolve.
193+
self.parse_pat_ident(BindingMode::ByValue(Mutability::Immutable))?
198194
} else if self.token.is_path_start() {
199195
// Parse pattern starting with a path
200196
let (qself, path) = if self.eat_lt() {
@@ -216,7 +212,7 @@ impl<'a> Parser<'a> {
216212
delim,
217213
prior_type_ascription: self.last_type_ascription,
218214
});
219-
pat = PatKind::Mac(mac);
215+
PatKind::Mac(mac)
220216
}
221217
token::DotDotDot | token::DotDotEq | token::DotDot => {
222218
let (end_kind, form) = match self.token.kind {
@@ -232,7 +228,7 @@ impl<'a> Parser<'a> {
232228
let begin = self.mk_expr(span, ExprKind::Path(qself, path), ThinVec::new());
233229
self.bump();
234230
let end = self.parse_pat_range_end_opt(&begin, form)?;
235-
pat = PatKind::Range(begin, end, respan(op_span, end_kind));
231+
PatKind::Range(begin, end, respan(op_span, end_kind))
236232
}
237233
token::OpenDelim(token::Brace) => {
238234
if qself.is_some() {
@@ -249,7 +245,7 @@ impl<'a> Parser<'a> {
249245
(vec![], true)
250246
});
251247
self.bump();
252-
pat = PatKind::Struct(path, fields, etc);
248+
PatKind::Struct(path, fields, etc)
253249
}
254250
token::OpenDelim(token::Paren) => {
255251
if qself.is_some() {
@@ -260,9 +256,9 @@ impl<'a> Parser<'a> {
260256
}
261257
// Parse tuple struct or enum pattern
262258
let (fields, _) = self.parse_paren_comma_seq(|p| p.parse_pat(None))?;
263-
pat = PatKind::TupleStruct(path, fields)
259+
PatKind::TupleStruct(path, fields)
264260
}
265-
_ => pat = PatKind::Path(qself, path),
261+
_ => PatKind::Path(qself, path),
266262
}
267263
} else {
268264
// Try to parse everything else as literal with optional minus
@@ -282,9 +278,9 @@ impl<'a> Parser<'a> {
282278
on a range-operator token")
283279
};
284280
let end = self.parse_pat_range_end_opt(&begin, form)?;
285-
pat = PatKind::Range(begin, end, respan(op_span, end_kind))
281+
PatKind::Range(begin, end, respan(op_span, end_kind))
286282
} else {
287-
pat = PatKind::Lit(begin);
283+
PatKind::Lit(begin)
288284
}
289285
}
290286
Err(mut err) => {
@@ -305,7 +301,7 @@ impl<'a> Parser<'a> {
305301
}
306302
}
307303
}
308-
}
304+
};
309305

310306
let pat = self.mk_pat(lo.to(self.prev_span), pat);
311307
let pat = self.maybe_recover_from_bad_qpath(pat, true)?;

0 commit comments

Comments
 (0)