about summary refs log tree commit diff
path: root/compiler/rustc_passes/src/debugger_visualizer.rs
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo>2023-05-16 18:50:05 +0200
committerMichael Woerister <michaelwoerister@posteo>2023-05-16 18:50:36 +0200
commita7d48800f97fff4948a49d4c8e97619e9a265db4 (patch)
tree4ed236f462d3074a01e6b7431da05e899c279953 /compiler/rustc_passes/src/debugger_visualizer.rs
parent7f01893900cf01b48adcaa0146e139cc8083b399 (diff)
downloadrust-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.rs18
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;
+}