Skip to content

Commit fc13fd0

Browse files
committed
typeck: Use LocalDefIds for the unused trait import set
1 parent a4337cc commit fc13fd0

File tree

7 files changed

+14
-18
lines changed

7 files changed

+14
-18
lines changed

src/librustc_middle/arena.rs

+1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ macro_rules! arena_types {
114114

115115
// This is used to decode the &'tcx [Span] for InlineAsm's line_spans.
116116
[decode] span: rustc_span::Span, rustc_span::Span;
117+
[decode] used_trait_imports: rustc_data_structures::fx::FxHashSet<rustc_hir::def_id::LocalDefId>, rustc_data_structures::fx::FxHashSet<rustc_hir::def_id::LocalDefId>;
117118
], $tcx);
118119
)
119120
}

src/librustc_middle/query/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ rustc_queries! {
526526
}
527527

528528
Other {
529-
query used_trait_imports(key: LocalDefId) -> &'tcx DefIdSet {
529+
query used_trait_imports(key: LocalDefId) -> &'tcx FxHashSet<LocalDefId> {
530530
desc { |tcx| "used_trait_imports `{}`", tcx.def_path_str(key.to_def_id()) }
531531
cache_on_disk_if { true }
532532
}

src/librustc_middle/ty/context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use rustc_data_structures::sync::{self, Lock, Lrc, WorkerLocal};
3535
use rustc_errors::ErrorReported;
3636
use rustc_hir as hir;
3737
use rustc_hir::def::{DefKind, Res};
38-
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId, LOCAL_CRATE};
38+
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LOCAL_CRATE};
3939
use rustc_hir::definitions::{DefPathHash, Definitions};
4040
use rustc_hir::lang_items::{self, PanicLocationLangItem};
4141
use rustc_hir::{HirId, ItemKind, ItemLocalId, ItemLocalMap, ItemLocalSet, Node, TraitCandidate};
@@ -392,7 +392,7 @@ pub struct TypeckTables<'tcx> {
392392
/// This is used for warning unused imports. During type
393393
/// checking, this `Lrc` should not be cloned: it must have a ref-count
394394
/// of 1 so that we can insert things into the set mutably.
395-
pub used_trait_imports: Lrc<DefIdSet>,
395+
pub used_trait_imports: Lrc<FxHashSet<LocalDefId>>,
396396

397397
/// If any errors occurred while type-checking this body,
398398
/// this field will be set to `Some(ErrorReported)`.

src/librustc_typeck/check/method/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
197197
debug!("used_trait_import: {:?}", import_id);
198198
Lrc::get_mut(&mut self.tables.borrow_mut().used_trait_imports)
199199
.unwrap()
200-
.insert(import_id.to_def_id());
200+
.insert(*import_id);
201201
}
202202

203203
self.tcx.check_stability(pick.item.def_id, Some(call_expr.hir_id), span);
@@ -461,7 +461,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
461461
let used_trait_imports = Lrc::get_mut(&mut tables.used_trait_imports).unwrap();
462462
for import_id in pick.import_ids {
463463
debug!("resolve_ufcs: used_trait_import: {:?}", import_id);
464-
used_trait_imports.insert(import_id.to_def_id());
464+
used_trait_imports.insert(import_id);
465465
}
466466
}
467467

src/librustc_typeck/check/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ use rustc_errors::ErrorReported;
9696
use rustc_errors::{pluralize, struct_span_err, Applicability, DiagnosticBuilder, DiagnosticId};
9797
use rustc_hir as hir;
9898
use rustc_hir::def::{CtorOf, DefKind, Res};
99-
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId, LOCAL_CRATE};
99+
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LOCAL_CRATE};
100100
use rustc_hir::intravisit::{self, NestedVisitorMap, Visitor};
101101
use rustc_hir::itemlikevisit::ItemLikeVisitor;
102102
use rustc_hir::lang_items::{
@@ -839,7 +839,7 @@ fn has_typeck_tables(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
839839
}
840840
}
841841

842-
fn used_trait_imports(tcx: TyCtxt<'_>, def_id: LocalDefId) -> &DefIdSet {
842+
fn used_trait_imports(tcx: TyCtxt<'_>, def_id: LocalDefId) -> &FxHashSet<LocalDefId> {
843843
&*tcx.typeck_tables_of(def_id).used_trait_imports
844844
}
845845

src/librustc_typeck/check/writeback.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44

55
use crate::check::FnCtxt;
66

7-
use rustc_data_structures::sync::Lrc;
87
use rustc_errors::ErrorReported;
98
use rustc_hir as hir;
10-
use rustc_hir::def_id::DefIdSet;
119
use rustc_hir::intravisit::{self, NestedVisitorMap, Visitor};
1210
use rustc_infer::infer::error_reporting::TypeAnnotationNeeded::E0282;
1311
use rustc_infer::infer::InferCtxt;
@@ -67,10 +65,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
6765
wbcx.visit_user_provided_sigs();
6866
wbcx.visit_generator_interior_types();
6967

70-
let used_trait_imports = mem::replace(
71-
&mut self.tables.borrow_mut().used_trait_imports,
72-
Lrc::new(DefIdSet::default()),
73-
);
68+
let used_trait_imports = mem::take(&mut self.tables.borrow_mut().used_trait_imports);
7469
debug!("used_trait_imports({:?}) = {:?}", item_def_id, used_trait_imports);
7570
wbcx.tables.used_trait_imports = used_trait_imports;
7671

src/librustc_typeck/check_unused.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
use rustc_data_structures::fx::FxHashMap;
1+
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
22
use rustc_errors::Applicability;
33
use rustc_hir as hir;
4-
use rustc_hir::def_id::{DefId, DefIdSet, LocalDefId, LOCAL_CRATE};
4+
use rustc_hir::def_id::{DefId, LocalDefId, LOCAL_CRATE};
55
use rustc_hir::itemlikevisit::ItemLikeVisitor;
66
use rustc_middle::ty::TyCtxt;
77
use rustc_session::lint;
88
use rustc_span::{Span, Symbol};
99

1010
pub fn check_crate(tcx: TyCtxt<'_>) {
11-
let mut used_trait_imports = DefIdSet::default();
11+
let mut used_trait_imports = FxHashSet::default();
1212
for &body_id in tcx.hir().krate().bodies.keys() {
1313
let item_def_id = tcx.hir().body_owner_def_id(body_id);
1414
let imports = tcx.used_trait_imports(item_def_id);
@@ -39,7 +39,7 @@ impl ItemLikeVisitor<'v> for CheckVisitor<'tcx> {
3939

4040
struct CheckVisitor<'tcx> {
4141
tcx: TyCtxt<'tcx>,
42-
used_trait_imports: DefIdSet,
42+
used_trait_imports: FxHashSet<LocalDefId>,
4343
}
4444

4545
impl CheckVisitor<'tcx> {
@@ -49,7 +49,7 @@ impl CheckVisitor<'tcx> {
4949
return;
5050
}
5151

52-
if self.used_trait_imports.contains(&def_id.to_def_id()) {
52+
if self.used_trait_imports.contains(&def_id) {
5353
return;
5454
}
5555

0 commit comments

Comments
 (0)