From fd4d50d4429f16edbc61d509bd3a31e28180b851 Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Thu, 26 Dec 2019 23:33:40 +0100 Subject: [PATCH] Move diagnostic_items queries to librustc_passes. --- src/librustc/lib.rs | 1 - src/librustc/ty/context.rs | 8 -------- src/librustc_passes/diagnostic_items.rs | 26 ++++++++++++++++++------- src/librustc_passes/lib.rs | 2 ++ 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 22bd333b6dd..38dcbc8e3fb 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -99,7 +99,6 @@ pub mod middle { pub mod cstore; pub mod dependency_format; - pub mod diagnostic_items; pub mod exported_symbols; pub mod free_region; pub mod lang_items; diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 0fb294bb9da..566c814f947 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -2759,14 +2759,6 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) { assert_eq!(id, LOCAL_CRATE); tcx.arena.alloc(middle::lang_items::collect(tcx)) }; - providers.diagnostic_items = |tcx, id| { - assert_eq!(id, LOCAL_CRATE); - middle::diagnostic_items::collect(tcx) - }; - providers.all_diagnostic_items = |tcx, id| { - assert_eq!(id, LOCAL_CRATE); - middle::diagnostic_items::collect_all(tcx) - }; providers.maybe_unused_trait_import = |tcx, id| tcx.maybe_unused_trait_imports.contains(&id); providers.maybe_unused_extern_crates = |tcx, cnum| { assert_eq!(cnum, LOCAL_CRATE); diff --git a/src/librustc_passes/diagnostic_items.rs b/src/librustc_passes/diagnostic_items.rs index 32ef1338712..65138fad43b 100644 --- a/src/librustc_passes/diagnostic_items.rs +++ b/src/librustc_passes/diagnostic_items.rs @@ -9,12 +9,13 @@ //! //! * Compiler internal types like `Ty` and `TyCtxt` -use crate::hir::def_id::{DefId, LOCAL_CRATE}; -use crate::ty::TyCtxt; -use crate::util::nodemap::FxHashMap; +use rustc::hir::def_id::{DefId, LOCAL_CRATE}; +use rustc::ty::query::Providers; +use rustc::ty::TyCtxt; +use rustc::util::nodemap::FxHashMap; -use crate::hir; -use crate::hir::itemlikevisit::ItemLikeVisitor; +use rustc::hir; +use rustc::hir::itemlikevisit::ItemLikeVisitor; use syntax::ast; use syntax::symbol::{sym, Symbol}; @@ -93,7 +94,7 @@ fn extract(attrs: &[ast::Attribute]) -> Option { } /// Traverse and collect the diagnostic items in the current -pub fn collect<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { +fn collect<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { // Initialize the collector. let mut collector = DiagnosticItemCollector::new(tcx); @@ -104,7 +105,7 @@ pub fn collect<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { } /// Traverse and collect all the diagnostic items in all crates. -pub fn collect_all<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { +fn collect_all<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { // Initialize the collector. let mut collector = FxHashMap::default(); @@ -117,3 +118,14 @@ pub fn collect_all<'tcx>(tcx: TyCtxt<'tcx>) -> &'tcx FxHashMap { tcx.arena.alloc(collector) } + +pub fn provide(providers: &mut Providers<'_>) { + providers.diagnostic_items = |tcx, id| { + assert_eq!(id, LOCAL_CRATE); + collect(tcx) + }; + providers.all_diagnostic_items = |tcx, id| { + assert_eq!(id, LOCAL_CRATE); + collect_all(tcx) + }; +} diff --git a/src/librustc_passes/lib.rs b/src/librustc_passes/lib.rs index fd34b6e6f47..1ac03122c4a 100644 --- a/src/librustc_passes/lib.rs +++ b/src/librustc_passes/lib.rs @@ -22,6 +22,7 @@ pub mod ast_validation; mod check_const; pub mod dead; +mod diagnostic_items; pub mod entry; pub mod hir_stats; mod intrinsicck; @@ -32,6 +33,7 @@ pub fn provide(providers: &mut Providers<'_>) { check_const::provide(providers); + diagnostic_items::provide(providers); entry::provide(providers); loops::provide(providers); liveness::provide(providers); -- GitLab