Skip to content

Commit

Permalink
Make requested changes
Browse files Browse the repository at this point in the history
  • Loading branch information
P1n3appl3 committed Jun 30, 2020
1 parent 49b8af2 commit 986f9a0
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 20 deletions.
4 changes: 2 additions & 2 deletions src/librustdoc/formats/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -142,7 +142,7 @@ impl Cache {
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();
Expand Down
4 changes: 4 additions & 0 deletions src/librustdoc/formats/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ use rustc_span::def_id::DefId;
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,
Expand Down
28 changes: 15 additions & 13 deletions src/librustdoc/formats/renderer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,24 @@ use crate::config::{RenderInfo, RenderOptions};
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,
Expand Down Expand Up @@ -54,19 +55,20 @@ impl Renderer {
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
Expand All @@ -81,7 +83,7 @@ impl Renderer {
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() {
Expand All @@ -98,7 +100,7 @@ impl Renderer {
_ => unreachable!(),
};
for it in module.items {
info!("Adding {:?} to worklist", it.name);
debug!("Adding {:?} to worklist", it.name);
work.push((cx.clone(), it));
}

Expand All @@ -108,7 +110,7 @@ impl Renderer {
}
}

renderer.after_krate(&krate, &cache)?;
renderer.after_run(diag)
format_renderer.after_krate(&krate, &cache)?;
format_renderer.after_run(diag)
}
}
6 changes: 2 additions & 4 deletions src/librustdoc/html/render/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -364,14 +364,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> {
Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ mod doctree;
mod error;
mod fold;
crate mod formats;
crate mod html;
pub mod html;
mod markdown;
mod passes;
mod test;
Expand Down

0 comments on commit 986f9a0

Please sign in to comment.