about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2023-09-08 10:14:36 +0000
committerMatthew Jasper <mjjasper1@gmail.com>2023-09-11 15:51:18 +0000
commit333388fd3c9fa03362a3c2a2675ab521c4ddb1ff (patch)
tree42e8442e95b8a575b04dc9caf0ec7befddec943e /compiler/rustc_hir_analysis
parent7b61f7f0020f12430dd72c77605279a696e539bf (diff)
downloadrust-333388fd3c9fa03362a3c2a2675ab521c4ddb1ff.tar.gz
rust-333388fd3c9fa03362a3c2a2675ab521c4ddb1ff.zip
Move let expression checking to parsing
There was an incomplete version of the check in parsing and a second
version in AST validation. This meant that some, but not all, invalid
uses were allowed inside macros/disabled cfgs. It also means that later
passes have a hard time knowing when the let expression is in a valid
location, sometimes causing ICEs.

- Add a field to ExprKind::Let in AST/HIR to mark whether it's in a
  valid location.
- Suppress later errors and MIR construction for invalid let
  expressions.
Diffstat (limited to 'compiler/rustc_hir_analysis')
-rw-r--r--compiler/rustc_hir_analysis/src/check/region.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_hir_analysis/src/check/region.rs b/compiler/rustc_hir_analysis/src/check/region.rs
index b40a3195965..463fab93e3f 100644
--- a/compiler/rustc_hir_analysis/src/check/region.rs
+++ b/compiler/rustc_hir_analysis/src/check/region.rs
@@ -149,7 +149,7 @@ fn resolve_block<'tcx>(visitor: &mut RegionResolutionVisitor<'tcx>, blk: &'tcx h
                     // From now on, we continue normally.
                     visitor.cx = prev_cx;
                 }
-                hir::StmtKind::Local(..)=> {
+                hir::StmtKind::Local(..) => {
                     // Each declaration introduces a subscope for bindings
                     // introduced by the declaration; this subscope covers a
                     // suffix of the block. Each subscope in a block has the