diff options
| author | Taiki Endo <te316e89@gmail.com> | 2019-05-03 13:04:26 +0900 |
|---|---|---|
| committer | Taiki Endo <te316e89@gmail.com> | 2019-05-03 13:04:26 +0900 |
| commit | 2fe50bc01bf9023b64a72407bb41a1f3b7245abd (patch) | |
| tree | 546935c0bf0b17391e7dc28e03c610e46b2fc9ed /src/libsyntax/parse | |
| parent | d15fc173818ccea6f8d97af13a30d454f9e4b35c (diff) | |
| download | rust-2fe50bc01bf9023b64a72407bb41a1f3b7245abd.tar.gz rust-2fe50bc01bf9023b64a72407bb41a1f3b7245abd.zip | |
Propagate mutability from arguments to local bindings in async fn
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index f70acb3e7da..c5173aa5569 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -8725,9 +8725,9 @@ impl<'a> Parser<'a> { // Check if this is a ident pattern, if so, we can optimize and avoid adding a // `let <pat> = __argN;` statement, instead just adding a `let <pat> = <pat>;` // statement. - let (ident, is_simple_pattern) = match input.pat.node { - PatKind::Ident(_, ident, _) => (ident, true), - _ => (ident, false), + let (binding_mode, ident, is_simple_pattern) = match input.pat.node { + PatKind::Ident(binding_mode, ident, _) => (binding_mode, ident, true), + _ => (BindingMode::ByValue(Mutability::Immutable), ident, false), }; // Construct an argument representing `__argN: <ty>` to replace the argument of the @@ -8755,9 +8755,7 @@ impl<'a> Parser<'a> { let move_local = Local { pat: P(Pat { id, - node: PatKind::Ident( - BindingMode::ByValue(Mutability::Immutable), ident, None, - ), + node: PatKind::Ident(binding_mode, ident, None), span, }), // We explicitly do not specify the type for this statement. When the user's |
