about summary refs log tree commit diff
path: root/compiler/rustc_resolve/src
diff options
context:
space:
mode:
authorCameron Steffen <cam.steffen94@gmail.com>2021-06-22 13:00:58 -0500
committerCameron Steffen <cam.steffen94@gmail.com>2021-08-30 20:17:45 -0500
commit89d2600d01dec0fa73e11edc9c5bb435e4ec1285 (patch)
tree5eb77645bb936b009cfc616489a2473e10f91fd3 /compiler/rustc_resolve/src
parent6f388bb369ddb6fb64e547009e031598425f773c (diff)
downloadrust-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.rs11
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);