diff options
| author | Noah Lev <camelidcamel@gmail.com> | 2021-10-31 20:54:37 -0700 |
|---|---|---|
| committer | Noah Lev <camelidcamel@gmail.com> | 2021-10-31 20:54:37 -0700 |
| commit | 28bdf892d6c2fc3a38d8fc40fab013d810fb3269 (patch) | |
| tree | 5d88275dcbabe235de7bd7b12fa4e5eb075aa87a | |
| parent | 5a9bbba2809e1a7fcf381f1e04cb81e5074e1f55 (diff) | |
| download | rust-28bdf892d6c2fc3a38d8fc40fab013d810fb3269.tar.gz rust-28bdf892d6c2fc3a38d8fc40fab013d810fb3269.zip | |
rustdoc: Use `DocVisitor` for sources collection
| -rw-r--r-- | src/librustdoc/html/sources.rs | 26 |
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) } } |
