diff options
| author | Cameron Steffen <cam.steffen94@gmail.com> | 2021-06-22 13:00:58 -0500 |
|---|---|---|
| committer | Cameron Steffen <cam.steffen94@gmail.com> | 2021-08-30 20:17:45 -0500 |
| commit | 89d2600d01dec0fa73e11edc9c5bb435e4ec1285 (patch) | |
| tree | 5eb77645bb936b009cfc616489a2473e10f91fd3 /compiler/rustc_resolve/src | |
| parent | 6f388bb369ddb6fb64e547009e031598425f773c (diff) | |
| download | rust-89d2600d01dec0fa73e11edc9c5bb435e4ec1285.tar.gz rust-89d2600d01dec0fa73e11edc9c5bb435e4ec1285.zip | |
Add let-else to AST
Diffstat (limited to 'compiler/rustc_resolve/src')
| -rw-r--r-- | compiler/rustc_resolve/src/late.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs index 0b552aa07f5..5c7b4b02822 100644 --- a/compiler/rustc_resolve/src/late.rs +++ b/compiler/rustc_resolve/src/late.rs @@ -454,7 +454,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> { _ => Some(( local.pat.span, local.ty.as_ref().map(|ty| ty.span), - local.init.as_ref().map(|init| init.span), + local.kind.init().map(|init| init.span), )), }; let original = replace(&mut self.diagnostic_metadata.current_let_binding, local_spans); @@ -1426,7 +1426,14 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> { walk_list!(self, visit_ty, &local.ty); // Resolve the initializer. - walk_list!(self, visit_expr, &local.init); + if let Some((init, els)) = local.kind.init_else_opt() { + self.visit_expr(init); + + // Resolve the `else` block + if let Some(els) = els { + self.visit_block(els); + } + } // Resolve the pattern. self.resolve_pattern_top(&local.pat, PatternSource::Let); |
