Remove a use of feed_local_crate and make it fail if used within queries
This commit is contained in:
parent
3845be6b37
commit
c696d4c323
@ -608,6 +608,8 @@ pub static DEFAULT_QUERY_PROVIDERS: LazyLock<Providers> = LazyLock::new(|| {
|
|||||||
providers.analysis = analysis;
|
providers.analysis = analysis;
|
||||||
providers.hir_crate = rustc_ast_lowering::lower_to_hir;
|
providers.hir_crate = rustc_ast_lowering::lower_to_hir;
|
||||||
providers.resolver_for_lowering = resolver_for_lowering;
|
providers.resolver_for_lowering = resolver_for_lowering;
|
||||||
|
providers.stripped_cfg_items =
|
||||||
|
|tcx, _| tcx.arena.alloc_from_iter(tcx.resolutions(()).stripped_cfg_items.steal());
|
||||||
providers.early_lint_checks = early_lint_checks;
|
providers.early_lint_checks = early_lint_checks;
|
||||||
proc_macro_decls::provide(providers);
|
proc_macro_decls::provide(providers);
|
||||||
rustc_const_eval::provide(providers);
|
rustc_const_eval::provide(providers);
|
||||||
|
@ -2230,7 +2230,6 @@ rustc_queries! {
|
|||||||
/// Should not be called for the local crate before the resolver outputs are created, as it
|
/// Should not be called for the local crate before the resolver outputs are created, as it
|
||||||
/// is only fed there.
|
/// is only fed there.
|
||||||
query stripped_cfg_items(cnum: CrateNum) -> &'tcx [StrippedCfgItem] {
|
query stripped_cfg_items(cnum: CrateNum) -> &'tcx [StrippedCfgItem] {
|
||||||
feedable
|
|
||||||
desc { "getting cfg-ed out item names" }
|
desc { "getting cfg-ed out item names" }
|
||||||
separate_provide_extern
|
separate_provide_extern
|
||||||
}
|
}
|
||||||
|
@ -550,10 +550,16 @@ impl<T: fmt::Debug + Copy> fmt::Debug for Feed<'_, T> {
|
|||||||
/// with T-compiler and making an analysis about why your addition
|
/// with T-compiler and making an analysis about why your addition
|
||||||
/// does not cause incremental compilation issues.
|
/// does not cause incremental compilation issues.
|
||||||
impl<'tcx> TyCtxt<'tcx> {
|
impl<'tcx> TyCtxt<'tcx> {
|
||||||
|
/// Can only be fed before queries are run, and is thus exempt from any
|
||||||
|
/// incremental issues. Do not use except for the initial query feeding.
|
||||||
pub fn feed_unit_query(self) -> TyCtxtFeed<'tcx, ()> {
|
pub fn feed_unit_query(self) -> TyCtxtFeed<'tcx, ()> {
|
||||||
TyCtxtFeed { tcx: self, key: () }
|
TyCtxtFeed { tcx: self, key: () }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Can only be fed before queries are run, and is thus exempt from any
|
||||||
|
/// incremental issues. Do not use except for the initial query feeding.
|
||||||
pub fn feed_local_crate(self) -> TyCtxtFeed<'tcx, CrateNum> {
|
pub fn feed_local_crate(self) -> TyCtxtFeed<'tcx, CrateNum> {
|
||||||
|
self.dep_graph.assert_ignored();
|
||||||
TyCtxtFeed { tcx: self, key: LOCAL_CRATE }
|
TyCtxtFeed { tcx: self, key: LOCAL_CRATE }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ pub use assoc::*;
|
|||||||
pub use generic_args::*;
|
pub use generic_args::*;
|
||||||
pub use generics::*;
|
pub use generics::*;
|
||||||
use rustc_ast as ast;
|
use rustc_ast as ast;
|
||||||
|
use rustc_ast::expand::StrippedCfgItem;
|
||||||
use rustc_ast::node_id::NodeMap;
|
use rustc_ast::node_id::NodeMap;
|
||||||
pub use rustc_ast_ir::{Movability, Mutability};
|
pub use rustc_ast_ir::{Movability, Mutability};
|
||||||
use rustc_attr as attr;
|
use rustc_attr as attr;
|
||||||
@ -189,6 +190,7 @@ pub struct ResolverGlobalCtxt {
|
|||||||
pub doc_link_resolutions: FxHashMap<LocalDefId, DocLinkResMap>,
|
pub doc_link_resolutions: FxHashMap<LocalDefId, DocLinkResMap>,
|
||||||
pub doc_link_traits_in_scope: FxHashMap<LocalDefId, Vec<DefId>>,
|
pub doc_link_traits_in_scope: FxHashMap<LocalDefId, Vec<DefId>>,
|
||||||
pub all_macro_rules: FxHashMap<Symbol, Res<ast::NodeId>>,
|
pub all_macro_rules: FxHashMap<Symbol, Res<ast::NodeId>>,
|
||||||
|
pub stripped_cfg_items: Steal<Vec<StrippedCfgItem>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Resolutions that should only be used for lowering.
|
/// Resolutions that should only be used for lowering.
|
||||||
|
@ -1559,13 +1559,16 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||||||
let confused_type_with_std_module = self.confused_type_with_std_module;
|
let confused_type_with_std_module = self.confused_type_with_std_module;
|
||||||
let effective_visibilities = self.effective_visibilities;
|
let effective_visibilities = self.effective_visibilities;
|
||||||
|
|
||||||
self.tcx.feed_local_crate().stripped_cfg_items(self.tcx.arena.alloc_from_iter(
|
let stripped_cfg_items = Steal::new(
|
||||||
self.stripped_cfg_items.into_iter().filter_map(|item| {
|
self.stripped_cfg_items
|
||||||
let parent_module =
|
.into_iter()
|
||||||
self.node_id_to_def_id.get(&item.parent_module)?.key().to_def_id();
|
.filter_map(|item| {
|
||||||
Some(StrippedCfgItem { parent_module, name: item.name, cfg: item.cfg })
|
let parent_module =
|
||||||
}),
|
self.node_id_to_def_id.get(&item.parent_module)?.key().to_def_id();
|
||||||
));
|
Some(StrippedCfgItem { parent_module, name: item.name, cfg: item.cfg })
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
);
|
||||||
|
|
||||||
let global_ctxt = ResolverGlobalCtxt {
|
let global_ctxt = ResolverGlobalCtxt {
|
||||||
expn_that_defined,
|
expn_that_defined,
|
||||||
@ -1582,6 +1585,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||||||
doc_link_resolutions: self.doc_link_resolutions,
|
doc_link_resolutions: self.doc_link_resolutions,
|
||||||
doc_link_traits_in_scope: self.doc_link_traits_in_scope,
|
doc_link_traits_in_scope: self.doc_link_traits_in_scope,
|
||||||
all_macro_rules: self.all_macro_rules,
|
all_macro_rules: self.all_macro_rules,
|
||||||
|
stripped_cfg_items,
|
||||||
};
|
};
|
||||||
let ast_lowering = ty::ResolverAstLowering {
|
let ast_lowering = ty::ResolverAstLowering {
|
||||||
legacy_const_generic_args: self.legacy_const_generic_args,
|
legacy_const_generic_args: self.legacy_const_generic_args,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user