about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNoah Lev <camelidcamel@gmail.com>2021-10-31 20:54:37 -0700
committerNoah Lev <camelidcamel@gmail.com>2021-10-31 20:54:37 -0700
commit28bdf892d6c2fc3a38d8fc40fab013d810fb3269 (patch)
tree5d88275dcbabe235de7bd7b12fa4e5eb075aa87a
parent5a9bbba2809e1a7fcf381f1e04cb81e5074e1f55 (diff)
downloadrust-28bdf892d6c2fc3a38d8fc40fab013d810fb3269.tar.gz
rust-28bdf892d6c2fc3a38d8fc40fab013d810fb3269.zip
rustdoc: Use `DocVisitor` for sources collection
-rw-r--r--src/librustdoc/html/sources.rs26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/librustdoc/html/sources.rs b/src/librustdoc/html/sources.rs
index 9422f84f997..74fcd22adf8 100644
--- a/src/librustdoc/html/sources.rs
+++ b/src/librustdoc/html/sources.rs
@@ -1,11 +1,11 @@
 use crate::clean;
 use crate::docfs::PathError;
 use crate::error::Error;
-use crate::fold::DocFolder;
 use crate::html::format::Buffer;
 use crate::html::highlight;
 use crate::html::layout;
 use crate::html::render::{Context, BASIC_KEYWORDS};
+use crate::visit::DocVisitor;
 use rustc_data_structures::fx::{FxHashMap, FxHashSet};
 use rustc_hir::def_id::LOCAL_CRATE;
 use rustc_middle::ty::TyCtxt;
@@ -18,10 +18,13 @@ use std::path::{Component, Path, PathBuf};
 
 crate fn render(cx: &mut Context<'_>, krate: clean::Crate) -> Result<clean::Crate, Error> {
     info!("emitting source files");
+
     let dst = cx.dst.join("src").join(&*krate.name(cx.tcx()).as_str());
     cx.shared.ensure_dir(&dst)?;
-    let mut folder = SourceCollector { dst, cx, emitted_local_sources: FxHashSet::default() };
-    Ok(folder.fold_crate(krate))
+
+    let mut collector = SourceCollector { dst, cx, emitted_local_sources: FxHashSet::default() };
+    collector.visit_crate(&krate);
+    Ok(krate)
 }
 
 crate fn collect_local_sources<'tcx>(
@@ -30,8 +33,7 @@ crate fn collect_local_sources<'tcx>(
     krate: clean::Crate,
 ) -> (clean::Crate, FxHashMap<PathBuf, String>) {
     let mut lsc = LocalSourcesCollector { tcx, local_sources: FxHashMap::default(), src_root };
-
-    let krate = lsc.fold_crate(krate);
+    lsc.visit_crate(&krate);
     (krate, lsc.local_sources)
 }
 
@@ -79,13 +81,13 @@ impl LocalSourcesCollector<'_, '_> {
     }
 }
 
-impl DocFolder for LocalSourcesCollector<'_, '_> {
-    fn fold_item(&mut self, item: clean::Item) -> Option<clean::Item> {
-        self.add_local_source(&item);
+impl DocVisitor for LocalSourcesCollector<'_, '_> {
+    fn visit_item(&mut self, item: &clean::Item) {
+        self.add_local_source(item);
 
         // FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
         // we could return None here without having to walk the rest of the crate.
-        Some(self.fold_item_recur(item))
+        self.visit_item_recur(item)
     }
 }
 
@@ -98,8 +100,8 @@ struct SourceCollector<'a, 'tcx> {
     emitted_local_sources: FxHashSet<PathBuf>,
 }
 
-impl DocFolder for SourceCollector<'_, '_> {
-    fn fold_item(&mut self, item: clean::Item) -> Option<clean::Item> {
+impl DocVisitor for SourceCollector<'_, '_> {
+    fn visit_item(&mut self, item: &clean::Item) {
         let tcx = self.cx.tcx();
         let span = item.span(tcx);
         let sess = tcx.sess;
@@ -134,7 +136,7 @@ impl DocFolder for SourceCollector<'_, '_> {
         }
         // FIXME: if `include_sources` isn't set and DocFolder didn't require consuming the crate by value,
         // we could return None here without having to walk the rest of the crate.
-        Some(self.fold_item_recur(item))
+        self.visit_item_recur(item)
     }
 }