diff options
| author | Michael Woerister <michaelwoerister@posteo> | 2023-05-16 18:50:05 +0200 | 
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo> | 2023-05-16 18:50:36 +0200 | 
| commit | a7d48800f97fff4948a49d4c8e97619e9a265db4 (patch) | |
| tree | 4ed236f462d3074a01e6b7431da05e899c279953 /compiler/rustc_passes/src/debugger_visualizer.rs | |
| parent | 7f01893900cf01b48adcaa0146e139cc8083b399 (diff) | |
| download | rust-a7d48800f97fff4948a49d4c8e97619e9a265db4.tar.gz rust-a7d48800f97fff4948a49d4c8e97619e9a265db4.zip | |
Turn debugger_visualizers from feed- into regular query.
Diffstat (limited to 'compiler/rustc_passes/src/debugger_visualizer.rs')
| -rw-r--r-- | compiler/rustc_passes/src/debugger_visualizer.rs | 18 | 
1 files changed, 14 insertions, 4 deletions
| diff --git a/compiler/rustc_passes/src/debugger_visualizer.rs b/compiler/rustc_passes/src/debugger_visualizer.rs index d75258c0511..a55dad9ee43 100644 --- a/compiler/rustc_passes/src/debugger_visualizer.rs +++ b/compiler/rustc_passes/src/debugger_visualizer.rs @@ -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; +} | 
