diff options
| author | ljedrz <ljedrz@gmail.com> | 2020-04-16 14:24:52 +0200 |
|---|---|---|
| committer | ljedrz <ljedrz@gmail.com> | 2020-04-16 14:24:52 +0200 |
| commit | d167408cb4efff3c0a5e404dbe5f097b87fa54fa (patch) | |
| tree | 4a3e4fdb9102540a683096f3686455b57006c5eb | |
| parent | 534a41a32952d36ec73656357777ebbea707aeb4 (diff) | |
| download | rust-d167408cb4efff3c0a5e404dbe5f097b87fa54fa.tar.gz rust-d167408cb4efff3c0a5e404dbe5f097b87fa54fa.zip | |
simplify unused unsafe block handling
| -rw-r--r-- | src/librustc_mir/transform/check_unsafety.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/librustc_mir/transform/check_unsafety.rs b/src/librustc_mir/transform/check_unsafety.rs index 3ce9b875e16..595b0432015 100644 --- a/src/librustc_mir/transform/check_unsafety.rs +++ b/src/librustc_mir/transform/check_unsafety.rs @@ -641,13 +641,17 @@ pub fn check_unsafety(tcx: TyCtxt<'_>, def_id: DefId) { } } - let mut unsafe_blocks: Vec<_> = unsafe_blocks.iter().collect(); - unsafe_blocks.sort_by_cached_key(|(hir_id, _)| tcx.hir().hir_id_to_node_id(*hir_id)); - let used_unsafe: FxHashSet<_> = - unsafe_blocks.iter().flat_map(|&&(id, used)| used.then_some(id)).collect(); - for &(block_id, is_used) in unsafe_blocks { - if !is_used { - report_unused_unsafe(tcx, &used_unsafe, block_id); + let (mut unsafe_used, mut unsafe_unused): (FxHashSet<_>, Vec<_>) = Default::default(); + for &(block_id, is_used) in unsafe_blocks.iter() { + if is_used { + unsafe_used.insert(block_id); + } else { + unsafe_unused.push(block_id); } } + unsafe_unused.sort_by_cached_key(|hir_id| tcx.hir().hir_id_to_node_id(*hir_id)); + + for &block_id in &unsafe_unused { + report_unused_unsafe(tcx, &unsafe_used, block_id); + } } |
