@@ -6,7 +6,7 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet};
6
6
use rustc_errors:: { pluralize, struct_span_err, Applicability , DiagnosticBuilder } ;
7
7
use rustc_hir as hir;
8
8
use rustc_hir:: def:: { DefKind , Namespace , Res } ;
9
- use rustc_hir:: def_id:: { DefId , CRATE_DEF_INDEX , LOCAL_CRATE } ;
9
+ use rustc_hir:: def_id:: { DefId , CRATE_DEF_INDEX } ;
10
10
use rustc_hir:: intravisit;
11
11
use rustc_hir:: lang_items:: LangItem ;
12
12
use rustc_hir:: { ExprKind , Node , QPath } ;
@@ -1440,11 +1440,11 @@ impl Ord for TraitInfo {
1440
1440
1441
1441
/// Retrieves all traits in this crate and any dependent crates.
1442
1442
pub fn all_traits ( tcx : TyCtxt < ' _ > ) -> Vec < TraitInfo > {
1443
- tcx. all_traits ( LOCAL_CRATE ) . iter ( ) . map ( |& def_id| TraitInfo { def_id } ) . collect ( )
1443
+ tcx. all_traits ( ( ) ) . iter ( ) . map ( |& def_id| TraitInfo { def_id } ) . collect ( )
1444
1444
}
1445
1445
1446
1446
/// Computes all traits in this crate and any dependent crates.
1447
- fn compute_all_traits ( tcx : TyCtxt < ' _ > ) -> Vec < DefId > {
1447
+ fn compute_all_traits ( tcx : TyCtxt < ' _ > , ( ) : ( ) ) -> & [ DefId ] {
1448
1448
use hir:: itemlikevisit;
1449
1449
1450
1450
let mut traits = vec ! [ ] ;
@@ -1503,14 +1503,11 @@ fn compute_all_traits(tcx: TyCtxt<'_>) -> Vec<DefId> {
1503
1503
handle_external_res ( tcx, & mut traits, & mut external_mods, Res :: Def ( DefKind :: Mod , def_id) ) ;
1504
1504
}
1505
1505
1506
- traits
1506
+ tcx . arena . alloc_from_iter ( traits)
1507
1507
}
1508
1508
1509
1509
pub fn provide ( providers : & mut ty:: query:: Providers ) {
1510
- providers. all_traits = |tcx, cnum| {
1511
- assert_eq ! ( cnum, LOCAL_CRATE ) ;
1512
- & tcx. arena . alloc ( compute_all_traits ( tcx) ) [ ..]
1513
- }
1510
+ providers. all_traits = compute_all_traits;
1514
1511
}
1515
1512
1516
1513
struct UsePlacementFinder < ' tcx > {
0 commit comments