Make the next variable mutable to allow for ref mut in for patterns.
This commit is contained in:
parent
09bc09201c
commit
bd7cc779b6
2 changed files with 22 additions and 7 deletions
|
|
@ -2170,12 +2170,12 @@ impl<'a> LoweringContext<'a> {
|
|||
// let result = match ::std::iter::IntoIterator::into_iter(<head>) {
|
||||
// mut iter => {
|
||||
// [opt_ident]: loop {
|
||||
// let next;
|
||||
// let mut _next;
|
||||
// match ::std::iter::Iterator::next(&mut iter) {
|
||||
// ::std::option::Option::Some(val) => next = val,
|
||||
// ::std::option::Option::Some(val) => _next = val,
|
||||
// ::std::option::Option::None => break
|
||||
// };
|
||||
// let <pat> = next;
|
||||
// let <pat> = _next;
|
||||
// StmtExpr(<body>);
|
||||
// }
|
||||
// }
|
||||
|
|
@ -2188,8 +2188,8 @@ impl<'a> LoweringContext<'a> {
|
|||
|
||||
let iter = self.str_to_ident("iter");
|
||||
|
||||
let next_ident = self.str_to_ident("next");
|
||||
let next_pat = self.pat_ident(e.span, next_ident);
|
||||
let next_ident = self.str_to_ident("_next");
|
||||
let next_pat = self.pat_ident_binding_mode(e.span, next_ident, hir::BindByValue(hir::MutMutable));
|
||||
|
||||
// `::std::option::Option::Some(val) => next = val`
|
||||
let pat_arm = {
|
||||
|
|
@ -2235,13 +2235,13 @@ impl<'a> LoweringContext<'a> {
|
|||
|
||||
let next_expr = P(self.expr_ident(e.span, next_ident, next_pat.id));
|
||||
|
||||
// `let next`
|
||||
// `let mut _next`
|
||||
let next_let = self.stmt_let_pat(e.span,
|
||||
None,
|
||||
next_pat,
|
||||
hir::LocalSource::ForLoopDesugar);
|
||||
|
||||
// `let <pat> = next`
|
||||
// `let <pat> = _next`
|
||||
let pat = self.lower_pat(pat);
|
||||
let pat_let = self.stmt_let_pat(e.span,
|
||||
Some(next_expr),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue