Make requested changes

This commit is contained in:
Joseph Ryan 2020-06-29 18:22:58 -05:00
parent 65bf5d5248
commit 3d707a008e
No known key found for this signature in database
GPG Key ID: 1A89B54043BBCCBD
5 changed files with 24 additions and 20 deletions

View File

@ -126,7 +126,7 @@ pub struct Cache {
impl Cache {
pub fn from_krate(
renderinfo: RenderInfo,
render_info: RenderInfo,
document_private: bool,
extern_html_root_urls: &BTreeMap<String, String>,
dst: &Path,
@ -142,7 +142,7 @@ pub fn from_krate(
deref_mut_trait_did,
owned_box_did,
..
} = renderinfo;
} = render_info;
let external_paths =
external_paths.into_iter().map(|(k, (v, t))| (k, (v, ItemType::from(t)))).collect();

View File

@ -9,11 +9,15 @@
use crate::clean;
use crate::clean::types::GetDefId;
/// Specifies whether rendering directly implemented trait items or ones from a certain Deref
/// impl.
pub enum AssocItemRender<'a> {
All,
DerefFor { trait_: &'a clean::Type, type_: &'a clean::Type, deref_mut_: bool },
}
/// For different handling of associated items from the Deref target of a type rather than the type
/// itself.
#[derive(Copy, Clone, PartialEq)]
pub enum RenderMode {
Normal,

View File

@ -7,23 +7,24 @@
use crate::error::Error;
use crate::formats::cache::{Cache, CACHE_KEY};
/// Allows for different backends to rustdoc to be used with the `Renderer::run()` function. Each
/// backend renderer has hooks for initialization, documenting an item, entering and exiting a
/// module, and cleanup/finalizing output.
pub trait FormatRenderer: Clone {
type Output: FormatRenderer;
/// Sets up any state required for the emulator. When this is called the cache has already been
/// Sets up any state required for the renderer. When this is called the cache has already been
/// populated.
fn init(
krate: clean::Crate,
options: RenderOptions,
renderinfo: RenderInfo,
render_info: RenderInfo,
edition: Edition,
cache: &mut Cache,
) -> Result<(Self::Output, clean::Crate), Error>;
) -> Result<(Self, clean::Crate), Error>;
/// Renders a single non-module item. This means no recursive sub-item rendering is required.
fn item(&mut self, item: clean::Item, cache: &Cache) -> Result<(), Error>;
/// Renders a module (doesn't need to handle recursing into children).
/// Renders a module (should not handle recursing into children).
fn mod_item_in(
&mut self,
item: &clean::Item,
@ -54,19 +55,20 @@ pub fn run<T: FormatRenderer + Clone>(
self,
krate: clean::Crate,
options: RenderOptions,
renderinfo: RenderInfo,
render_info: RenderInfo,
diag: &rustc_errors::Handler,
edition: Edition,
) -> Result<(), Error> {
let (krate, mut cache) = Cache::from_krate(
renderinfo.clone(),
render_info.clone(),
options.document_private,
&options.extern_html_root_urls,
&options.output,
krate,
);
let (mut renderer, mut krate) = T::init(krate, options, renderinfo, edition, &mut cache)?;
let (mut format_renderer, mut krate) =
T::init(krate, options, render_info, edition, &mut cache)?;
let cache = Arc::new(cache);
// Freeze the cache now that the index has been built. Put an Arc into TLS for future
@ -81,7 +83,7 @@ pub fn run<T: FormatRenderer + Clone>(
item.name = Some(krate.name.clone());
// Render the crate documentation
let mut work = vec![(renderer.clone(), item)];
let mut work = vec![(format_renderer.clone(), item)];
while let Some((mut cx, item)) = work.pop() {
if item.is_mod() {
@ -98,7 +100,7 @@ pub fn run<T: FormatRenderer + Clone>(
_ => unreachable!(),
};
for it in module.items {
info!("Adding {:?} to worklist", it.name);
debug!("Adding {:?} to worklist", it.name);
work.push((cx.clone(), it));
}
@ -108,7 +110,7 @@ pub fn run<T: FormatRenderer + Clone>(
}
}
renderer.after_krate(&krate, &cache)?;
renderer.after_run(diag)
format_renderer.after_krate(&krate, &cache)?;
format_renderer.after_run(diag)
}
}

View File

@ -371,14 +371,12 @@ pub fn initial_ids() -> Vec<String> {
.collect()
}
/// Generates the documentation for `crate` into the directory `dst`
impl FormatRenderer for Context {
type Output = Self;
/// Generates the documentation for `crate` into the directory `dst`
fn init(
mut krate: clean::Crate,
options: RenderOptions,
_renderinfo: RenderInfo,
_render_info: RenderInfo,
edition: Edition,
cache: &mut Cache,
) -> Result<(Context, clean::Crate), Error> {

View File

@ -67,7 +67,7 @@
mod error;
mod fold;
crate mod formats;
crate mod html;
pub mod html;
mod markdown;
mod passes;
mod test;