]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_ast_lowering/src/block.rs
Auto merge of #99058 - michaelwoerister:remove-stable-set-and-map, r=nagisa
[rust.git] / compiler / rustc_ast_lowering / src / block.rs
index 0ec596e705374cc23504076e11e7ba3f28d998fe..7cbfe143b4d83d3701a7b30e5571f8e4d4322c1c 100644 (file)
@@ -36,23 +36,9 @@ fn lower_stmts(
             match s.kind {
                 StmtKind::Local(ref local) => {
                     let hir_id = self.lower_node_id(s.id);
-                    let els = if let LocalKind::InitElse(_, els) = &local.kind {
-                        if !self.tcx.features().let_else {
-                            feature_err(
-                                &self.tcx.sess.parse_sess,
-                                sym::let_else,
-                                s.span,
-                                "`let...else` statements are unstable",
-                            )
-                            .emit();
-                        }
-                        Some(self.lower_block(els, false))
-                    } else {
-                        None
-                    };
                     let local = self.lower_local(local);
                     self.alias_attrs(hir_id, local.hir_id);
-                    let kind = hir::StmtKind::Local(local, els);
+                    let kind = hir::StmtKind::Local(local);
                     let span = self.lower_span(s.span);
                     stmts.push(hir::Stmt { hir_id, kind, span });
                 }
@@ -105,10 +91,24 @@ fn lower_local(&mut self, l: &Local) -> &'hir hir::Local<'hir> {
         let init = l.kind.init().map(|init| self.lower_expr(init));
         let hir_id = self.lower_node_id(l.id);
         let pat = self.lower_pat(&l.pat);
+        let els = if let LocalKind::InitElse(_, els) = &l.kind {
+            if !self.tcx.features().let_else {
+                feature_err(
+                    &self.tcx.sess.parse_sess,
+                    sym::let_else,
+                    l.span,
+                    "`let...else` statements are unstable",
+                )
+                .emit();
+            }
+            Some(self.lower_block(els, false))
+        } else {
+            None
+        };
         let span = self.lower_span(l.span);
         let source = hir::LocalSource::Normal;
         self.lower_attrs(hir_id, &l.attrs);
-        self.arena.alloc(hir::Local { hir_id, ty, pat, init, span, source })
+        self.arena.alloc(hir::Local { hir_id, ty, pat, init, els, span, source })
     }
 
     fn lower_block_check_mode(&mut self, b: &BlockCheckMode) -> hir::BlockCheckMode {