diff options
| author | Matthew Jasper <mjjasper1@gmail.com> | 2023-09-08 10:14:36 +0000 |
|---|---|---|
| committer | Matthew Jasper <mjjasper1@gmail.com> | 2023-09-11 15:51:18 +0000 |
| commit | 333388fd3c9fa03362a3c2a2675ab521c4ddb1ff (patch) | |
| tree | 42e8442e95b8a575b04dc9caf0ec7befddec943e /compiler/rustc_hir_analysis | |
| parent | 7b61f7f0020f12430dd72c77605279a696e539bf (diff) | |
| download | rust-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.rs | 2 |
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 |
