diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2024-01-09 17:05:55 +0100 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2024-01-09 17:05:55 +0100 |
| commit | 807d618676052befa3e621dc42e7be0b4c5f1576 (patch) | |
| tree | a64fd653fe4a5ca64c18f1e4b8a8ffc6a8463965 /compiler | |
| parent | 560beb1ad423a9f3e447bdeefded8994cd8af75c (diff) | |
| download | rust-807d618676052befa3e621dc42e7be0b4c5f1576.tar.gz rust-807d618676052befa3e621dc42e7be0b4c5f1576.zip | |
Only check bindings if the pattern is an or- or never- pattern
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_resolve/src/late.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs index 90b27856161..2a8bf1fe2d3 100644 --- a/compiler/rustc_resolve/src/late.rs +++ b/compiler/rustc_resolve/src/late.rs @@ -3324,7 +3324,17 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> { /// Check the consistency of bindings wrt or-patterns and never patterns. fn check_consistent_bindings(&mut self, pat: &'ast Pat) { - let _ = self.compute_and_check_binding_map(pat); + let mut is_or_or_never = false; + pat.walk(&mut |pat| match pat.kind { + PatKind::Or(..) | PatKind::Never => { + is_or_or_never = true; + false + } + _ => true, + }); + if is_or_or_never { + let _ = self.compute_and_check_binding_map(pat); + } } fn resolve_arm(&mut self, arm: &'ast Arm) { |
