diff options
| author | Michael Goulet <michael@errs.io> | 2024-09-18 16:45:27 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-09-18 16:45:48 -0400 |
| commit | 12f2bcde63285bf2b2f9f9ac615d4edf139a3f0e (patch) | |
| tree | 936487bc8d39e36bf6f4294f443f7a37a879fa3b /compiler | |
| parent | 7fc70f870a1d11c3b104274d3a18112996cdec9a (diff) | |
| download | rust-12f2bcde63285bf2b2f9f9ac615d4edf139a3f0e.tar.gz rust-12f2bcde63285bf2b2f9f9ac615d4edf139a3f0e.zip | |
Check params for unsafety in THIR
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_mir_build/src/check_unsafety.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/rustc_mir_build/src/check_unsafety.rs b/compiler/rustc_mir_build/src/check_unsafety.rs index c7fcfe3ce2a..57390dd58f4 100644 --- a/compiler/rustc_mir_build/src/check_unsafety.rs +++ b/compiler/rustc_mir_build/src/check_unsafety.rs @@ -218,6 +218,13 @@ impl<'tcx> UnsafetyVisitor<'_, 'tcx> { warnings: self.warnings, suggest_unsafe_block: self.suggest_unsafe_block, }; + // params in THIR may be unsafe, e.g. a union pattern. + for param in &inner_thir.params { + if let Some(param_pat) = param.pat.as_deref() { + inner_visitor.visit_pat(param_pat); + } + } + // Visit the body. inner_visitor.visit_expr(&inner_thir[expr]); // Unsafe blocks can be used in the inner body, make sure to take it into account self.safety_context = inner_visitor.safety_context; @@ -1032,6 +1039,13 @@ pub(crate) fn check_unsafety(tcx: TyCtxt<'_>, def: LocalDefId) { warnings: &mut warnings, suggest_unsafe_block: true, }; + // params in THIR may be unsafe, e.g. a union pattern. + for param in &thir.params { + if let Some(param_pat) = param.pat.as_deref() { + visitor.visit_pat(param_pat); + } + } + // Visit the body. visitor.visit_expr(&thir[expr]); warnings.sort_by_key(|w| w.block_span); |
