@@ -6,7 +6,7 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet};
66use rustc_errors:: { pluralize, struct_span_err, Applicability , DiagnosticBuilder } ;
77use rustc_hir as hir;
88use 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 } ;
1010use rustc_hir:: intravisit;
1111use rustc_hir:: lang_items:: LangItem ;
1212use rustc_hir:: { ExprKind , Node , QPath } ;
@@ -1440,11 +1440,11 @@ impl Ord for TraitInfo {
14401440
14411441/// Retrieves all traits in this crate and any dependent crates.
14421442pub 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 ( )
14441444}
14451445
14461446/// 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 ] {
14481448 use hir:: itemlikevisit;
14491449
14501450 let mut traits = vec ! [ ] ;
@@ -1503,14 +1503,11 @@ fn compute_all_traits(tcx: TyCtxt<'_>) -> Vec<DefId> {
15031503 handle_external_res ( tcx, & mut traits, & mut external_mods, Res :: Def ( DefKind :: Mod , def_id) ) ;
15041504 }
15051505
1506- traits
1506+ tcx . arena . alloc_from_iter ( traits)
15071507}
15081508
15091509pub 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;
15141511}
15151512
15161513struct UsePlacementFinder < ' tcx > {
0 commit comments