Turn debugger_visualizers from feed- into regular query.
This commit is contained in:
parent
7f01893900
commit
a7d48800f9
6 changed files with 29 additions and 13 deletions
|
@ -3,6 +3,10 @@
|
|||
use rustc_ast::Attribute;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_expand::base::resolve_path;
|
||||
use rustc_middle::{
|
||||
query::{LocalCrate, Providers},
|
||||
ty::TyCtxt,
|
||||
};
|
||||
use rustc_session::Session;
|
||||
use rustc_span::{sym, DebuggerVisualizerFile, DebuggerVisualizerType};
|
||||
|
||||
|
@ -12,7 +16,7 @@ impl DebuggerVisualizerCollector<'_> {
|
|||
fn check_for_debugger_visualizer(&mut self, attr: &Attribute) {
|
||||
if attr.has_name(sym::debugger_visualizer) {
|
||||
let Some(hints) = attr.meta_item_list() else {
|
||||
self.sess.emit_err(DebugVisualizerInvalid { span: attr.span });
|
||||
self.sess.emit_err(DebugVisualizerInvalid { span: attr.span });
|
||||
return;
|
||||
};
|
||||
|
||||
|
@ -82,12 +86,18 @@ impl<'ast> rustc_ast::visit::Visitor<'ast> for DebuggerVisualizerCollector<'_> {
|
|||
}
|
||||
|
||||
/// Traverses and collects the debugger visualizers for a specific crate.
|
||||
pub fn collect(sess: &Session, krate: &rustc_ast::ast::Crate) -> Vec<DebuggerVisualizerFile> {
|
||||
// Initialize the collector.
|
||||
let mut visitor = DebuggerVisualizerCollector { sess, visualizers: Vec::new() };
|
||||
fn debugger_visualizers(tcx: TyCtxt<'_>, _: LocalCrate) -> Vec<DebuggerVisualizerFile> {
|
||||
let resolver_and_krate = tcx.resolver_for_lowering(()).borrow();
|
||||
let krate = &*resolver_and_krate.1;
|
||||
|
||||
let mut visitor = DebuggerVisualizerCollector { sess: tcx.sess, visualizers: Vec::new() };
|
||||
rustc_ast::visit::Visitor::visit_crate(&mut visitor, krate);
|
||||
|
||||
// Sort the visualizers so we always get a deterministic query result.
|
||||
visitor.visualizers.sort_unstable();
|
||||
visitor.visualizers
|
||||
}
|
||||
|
||||
pub fn provide(providers: &mut Providers) {
|
||||
providers.debugger_visualizers = debugger_visualizers;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ use rustc_middle::query::Providers;
|
|||
mod check_attr;
|
||||
mod check_const;
|
||||
pub mod dead;
|
||||
pub mod debugger_visualizer;
|
||||
mod debugger_visualizer;
|
||||
mod diagnostic_items;
|
||||
pub mod entry;
|
||||
mod errors;
|
||||
|
@ -50,6 +50,7 @@ pub fn provide(providers: &mut Providers) {
|
|||
check_attr::provide(providers);
|
||||
check_const::provide(providers);
|
||||
dead::provide(providers);
|
||||
debugger_visualizer::provide(providers);
|
||||
diagnostic_items::provide(providers);
|
||||
entry::provide(providers);
|
||||
lang_items::provide(providers);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue