diff options
| author | Joshua Nelson <jyn514@gmail.com> | 2020-12-16 14:34:08 -0500 |
|---|---|---|
| committer | Joshua Nelson <jyn514@gmail.com> | 2020-12-17 11:36:04 -0500 |
| commit | 47c969436adf2cc5acfbddf1061fb30d0fdacd34 (patch) | |
| tree | 5470b303dd96e7f9a9338402f29a7d6b1e716681 | |
| parent | 9221d4d1d347ee50f31d2bf50e13ecfdf14c4611 (diff) | |
| download | rust-47c969436adf2cc5acfbddf1061fb30d0fdacd34.tar.gz rust-47c969436adf2cc5acfbddf1061fb30d0fdacd34.zip | |
Make it compile
| -rw-r--r-- | src/librustdoc/formats/renderer.rs | 8 | ||||
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 122 | ||||
| -rw-r--r-- | src/librustdoc/html/sources.rs | 12 | ||||
| -rw-r--r-- | src/librustdoc/json/conversions.rs | 8 | ||||
| -rw-r--r-- | src/librustdoc/json/mod.rs | 17 | ||||
| -rw-r--r-- | src/librustdoc/lib.rs | 9 |
6 files changed, 104 insertions, 72 deletions
diff --git a/src/librustdoc/formats/renderer.rs b/src/librustdoc/formats/renderer.rs index 7ec29a70bd0..fbbd3c1ccf5 100644 --- a/src/librustdoc/formats/renderer.rs +++ b/src/librustdoc/formats/renderer.rs @@ -11,7 +11,7 @@ use crate::formats::cache::{Cache, CACHE_KEY}; /// Allows for different backends to rustdoc to be used with the `run_format()` function. Each /// backend renderer has hooks for initialization, documenting an item, entering and exiting a /// module, and cleanup/finalizing output. -crate trait FormatRenderer: Clone { +crate trait FormatRenderer<'tcx>: Clone { /// Sets up any state required for the renderer. When this is called the cache has already been /// populated. fn init( @@ -20,7 +20,7 @@ crate trait FormatRenderer: Clone { render_info: RenderInfo, edition: Edition, cache: &mut Cache, - tcx: ty::TyCtxt<'_>, + tcx: ty::TyCtxt<'tcx>, ) -> Result<(Self, clean::Crate), Error>; /// Renders a single non-module item. This means no recursive sub-item rendering is required. @@ -45,13 +45,13 @@ crate trait FormatRenderer: Clone { } /// Main method for rendering a crate. -crate fn run_format<T: FormatRenderer>( +crate fn run_format<'tcx, T: FormatRenderer<'tcx>>( krate: clean::Crate, options: RenderOptions, render_info: RenderInfo, diag: &rustc_errors::Handler, edition: Edition, - tcx: ty::TyCtxt<'_>, + tcx: ty::TyCtxt<'tcx>, ) -> Result<(), Error> { let (krate, mut cache) = Cache::from_krate( render_info.clone(), diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index d8d46adfb63..e6d3fdbe185 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -52,12 +52,12 @@ use rustc_ast_pretty::pprust; use rustc_attr::{Deprecation, StabilityLevel}; use rustc_data_structures::flock; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; -use rustc_data_structures::sync::Lrc; use rustc_hir as hir; use rustc_hir::def_id::{DefId, LOCAL_CRATE}; use rustc_hir::Mutability; use rustc_middle::middle::stability; use rustc_middle::ty; +use rustc_middle::ty::TyCtxt; use rustc_session::Session; use rustc_span::edition::Edition; use rustc_span::hygiene::MacroKind; @@ -103,7 +103,7 @@ crate fn ensure_trailing_slash(v: &str) -> impl fmt::Display + '_ { /// easily cloned because it is cloned per work-job (about once per item in the /// rustdoc tree). #[derive(Clone)] -crate struct Context { +crate struct Context<'tcx> { /// Current hierarchy of components leading down to what's currently being /// rendered crate current: Vec<String>, @@ -116,15 +116,15 @@ crate struct Context { crate render_redirect_pages: bool, /// The map used to ensure all generated 'id=' attributes are unique. id_map: Rc<RefCell<IdMap>>, - crate shared: Arc<SharedContext>, + crate shared: Arc<SharedContext<'tcx>>, all: Rc<RefCell<AllTypes>>, /// Storage for the errors produced while generating documentation so they /// can be printed together at the end. crate errors: Rc<Receiver<String>>, } -crate struct SharedContext { - crate sess: Lrc<Session>, +crate struct SharedContext<'tcx> { + crate tcx: TyCtxt<'tcx>, /// The path to the crate root source minus the file name. /// Used for simplifying paths to the highlighted source code files. crate src_root: PathBuf, @@ -164,7 +164,7 @@ crate struct SharedContext { playground: Option<markdown::Playground>, } -impl Context { +impl Context<'_> { fn path(&self, filename: &str) -> PathBuf { // We use splitn vs Path::extension here because we might get a filename // like `style.min.css` and we want to process that into @@ -177,11 +177,11 @@ impl Context { } fn sess(&self) -> &Session { - &self.shared.sess + &self.shared.tcx.sess } } -impl SharedContext { +impl SharedContext<'_> { crate fn ensure_dir(&self, dst: &Path) -> Result<(), Error> { let mut dirs = self.created_dirs.borrow_mut(); if !dirs.contains(dst) { @@ -382,15 +382,15 @@ crate fn initial_ids() -> Vec<String> { } /// Generates the documentation for `crate` into the directory `dst` -impl FormatRenderer for Context { +impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { fn init( mut krate: clean::Crate, options: RenderOptions, _render_info: RenderInfo, edition: Edition, cache: &mut Cache, - tcx: ty::TyCtxt<'_>, - ) -> Result<(Context, clean::Crate), Error> { + tcx: ty::TyCtxt<'tcx>, + ) -> Result<(Self, clean::Crate), Error> { // need to save a copy of the options for rendering the index page let md_opts = options.clone(); let RenderOptions { @@ -689,7 +689,7 @@ impl FormatRenderer for Context { } fn write_shared( - cx: &Context, + cx: &Context<'_>, krate: &clean::Crate, search_index: String, options: &RenderOptions, @@ -1206,7 +1206,7 @@ fn write_minify( } } -fn write_srclink(cx: &Context, item: &clean::Item, buf: &mut Buffer, cache: &Cache) { +fn write_srclink(cx: &Context<'_>, item: &clean::Item, buf: &mut Buffer, cache: &Cache) { if let Some(l) = cx.src_href(item, cache) { write!( buf, @@ -1517,7 +1517,7 @@ fn settings(root_path: &str, suffix: &str, themes: &[StylePath]) -> Result<Strin )) } -impl Context { +impl Context<'_> { fn derive_id(&self, id: String) -> String { let mut map = self.id_map.borrow_mut(); map.derive(id) @@ -1702,7 +1702,7 @@ where write!(w, "</div>") } -fn print_item(cx: &Context, item: &clean::Item, buf: &mut Buffer, cache: &Cache) { +fn print_item(cx: &Context<'_>, item: &clean::Item, buf: &mut Buffer, cache: &Cache) { debug_assert!(!item.is_stripped()); // Write the breadcrumb trail header for the top write!(buf, "<h1 class=\"fqn\"><span class=\"out-of-band\">"); @@ -1817,14 +1817,14 @@ fn item_path(ty: ItemType, name: &str) -> String { } } -fn full_path(cx: &Context, item: &clean::Item) -> String { +fn full_path(cx: &Context<'_>, item: &clean::Item) -> String { let mut s = cx.current.join("::"); s.push_str("::"); s.push_str(&item.name.unwrap().as_str()); s } -fn document(w: &mut Buffer, cx: &Context, item: &clean::Item, parent: Option<&clean::Item>) { +fn document(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, parent: Option<&clean::Item>) { if let Some(ref name) = item.name { info!("Documenting {}", name); } @@ -1835,7 +1835,7 @@ fn document(w: &mut Buffer, cx: &Context, item: &clean::Item, parent: Option<&cl /// Render md_text as markdown. fn render_markdown( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, md_text: &str, links: Vec<RenderedLink>, prefix: &str, @@ -1864,7 +1864,7 @@ fn render_markdown( fn document_short( w: &mut Buffer, item: &clean::Item, - cx: &Context, + cx: &Context<'_>, link: AssocItemLink<'_>, prefix: &str, is_hidden: bool, @@ -1905,7 +1905,13 @@ fn document_short( } } -fn document_full(w: &mut Buffer, item: &clean::Item, cx: &Context, prefix: &str, is_hidden: bool) { +fn document_full( + w: &mut Buffer, + item: &clean::Item, + cx: &Context<'_>, + prefix: &str, + is_hidden: bool, +) { if let Some(s) = cx.shared.maybe_collapsed_doc_value(item) { debug!("Doc block: =====\n{}\n=====", s); render_markdown(w, cx, &*s, item.links(), prefix, is_hidden); @@ -1926,7 +1932,7 @@ fn document_full(w: &mut Buffer, item: &clean::Item, cx: &Context, prefix: &str, /// * Required features (through the `doc_cfg` feature) fn document_item_info( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, item: &clean::Item, is_hidden: bool, parent: Option<&clean::Item>, @@ -2030,7 +2036,7 @@ crate fn compare_names(mut lhs: &str, mut rhs: &str) -> Ordering { Ordering::Equal } -fn item_module(w: &mut Buffer, cx: &Context, item: &clean::Item, items: &[clean::Item]) { +fn item_module(w: &mut Buffer, cx: &Context<'_>, item: &clean::Item, items: &[clean::Item]) { document(w, cx, item, None); let mut indices = (0..items.len()).filter(|i| !items[*i].is_stripped()).collect::<Vec<usize>>(); @@ -2272,7 +2278,11 @@ fn portability(item: &clean::Item, parent: Option<&clean::Item>) -> Option<Strin /// Render the stability, deprecation and portability information that is displayed at the top of /// the item's documentation. -fn short_item_info(item: &clean::Item, cx: &Context, parent: Option<&clean::Item>) -> Vec<String> { +fn short_item_info( + item: &clean::Item, + cx: &Context<'_>, + parent: Option<&clean::Item>, +) -> Vec<String> { let mut extra_info = vec![]; let error_codes = cx.shared.codes; @@ -2362,7 +2372,7 @@ fn short_item_info(item: &clean::Item, cx: &Context, parent: Option<&clean::Item extra_info } -fn item_constant(w: &mut Buffer, cx: &Context, it: &clean::Item, c: &clean::Constant) { +fn item_constant(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, c: &clean::Constant) { write!(w, "<pre class=\"rust const\">"); render_attributes(w, it, false); @@ -2397,7 +2407,7 @@ fn item_constant(w: &mut Buffer, cx: &Context, it: &clean::Item, c: &clean::Cons document(w, cx, it, None) } -fn item_static(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Static) { +fn item_static(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::Static) { write!(w, "<pre class=\"rust static\">"); render_attributes(w, it, false); write!( @@ -2411,7 +2421,7 @@ fn item_static(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Static document(w, cx, it, None) } -fn item_function(w: &mut Buffer, cx: &Context, it: &clean::Item, f: &clean::Function) { +fn item_function(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, f: &clean::Function) { let header_len = format!( "{}{}{}{}{:#}fn {}{:#}", it.visibility.print_with_space(), @@ -2445,7 +2455,7 @@ fn item_function(w: &mut Buffer, cx: &Context, it: &clean::Item, f: &clean::Func } fn render_implementor( - cx: &Context, + cx: &Context<'_>, implementor: &Impl, parent: &clean::Item, w: &mut Buffer, @@ -2482,7 +2492,7 @@ fn render_implementor( } fn render_impls( - cx: &Context, + cx: &Context<'_>, w: &mut Buffer, traits: &[&&Impl], containing_item: &clean::Item, @@ -2541,7 +2551,7 @@ fn compare_impl<'a, 'b>(lhs: &'a &&Impl, rhs: &'b &&Impl) -> Ordering { compare_names(&lhs, &rhs) } -fn item_trait(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Trait, cache: &Cache) { +fn item_trait(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Trait, cache: &Cache) { let bounds = bounds(&t.bounds, false); let types = t.items.iter().filter(|m| m.is_associated_type()).collect::<Vec<_>>(); let consts = t.items.iter().filter(|m| m.is_associated_const()).collect::<Vec<_>>(); @@ -2637,7 +2647,13 @@ fn item_trait(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Trait, write!(w, "{}<span class=\"loading-content\">Loading content...</span>", extra_content) } - fn trait_item(w: &mut Buffer, cx: &Context, m: &clean::Item, t: &clean::Item, cache: &Cache) { + fn trait_item( + w: &mut Buffer, + cx: &Context<'_>, + m: &clean::Item, + t: &clean::Item, + cache: &Cache, + ) { let name = m.name.as_ref().unwrap(); info!("Documenting {} on {:?}", name, t.name); let item_type = m.type_(); @@ -3040,7 +3056,13 @@ fn render_assoc_item( } } -fn item_struct(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Struct, cache: &Cache) { +fn item_struct( + w: &mut Buffer, + cx: &Context<'_>, + it: &clean::Item, + s: &clean::Struct, + cache: &Cache, +) { wrap_into_docblock(w, |w| { write!(w, "<pre class=\"rust struct\">"); render_attributes(w, it, true); @@ -3090,7 +3112,7 @@ fn item_struct(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Struct render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn item_union(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Union, cache: &Cache) { +fn item_union(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::Union, cache: &Cache) { wrap_into_docblock(w, |w| { write!(w, "<pre class=\"rust union\">"); render_attributes(w, it, true); @@ -3136,7 +3158,7 @@ fn item_union(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Union, render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum, cache: &Cache) { +fn item_enum(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, e: &clean::Enum, cache: &Cache) { wrap_into_docblock(w, |w| { write!(w, "<pre class=\"rust enum\">"); render_attributes(w, it, true); @@ -3444,7 +3466,7 @@ impl<'a> AssocItemLink<'a> { fn render_assoc_items( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, containing_item: &clean::Item, it: DefId, what: AssocItemRender<'_>, @@ -3560,7 +3582,7 @@ fn render_assoc_items( fn render_deref_methods( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, impl_: &Impl, container_item: &clean::Item, deref_mut: bool, @@ -3676,7 +3698,7 @@ fn spotlight_decl(decl: &clean::FnDecl) -> String { fn render_impl( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, i: &Impl, parent: &clean::Item, link: AssocItemLink<'_>, @@ -3770,7 +3792,7 @@ fn render_impl( fn doc_impl_item( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, item: &clean::Item, parent: &clean::Item, link: AssocItemLink<'_>, @@ -3907,7 +3929,7 @@ fn render_impl( fn render_default_items( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, t: &clean::Trait, i: &clean::Impl, parent: &clean::Item, @@ -3967,7 +3989,7 @@ fn render_impl( fn item_opaque_ty( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, it: &clean::Item, t: &clean::OpaqueTy, cache: &Cache, @@ -3994,7 +4016,7 @@ fn item_opaque_ty( fn item_trait_alias( w: &mut Buffer, - cx: &Context, + cx: &Context<'_>, it: &clean::Item, t: &clean::TraitAlias, cache: &Cache, @@ -4019,7 +4041,13 @@ fn item_trait_alias( render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn item_typedef(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Typedef, cache: &Cache) { +fn item_typedef( + w: &mut Buffer, + cx: &Context<'_>, + it: &clean::Item, + t: &clean::Typedef, + cache: &Cache, +) { write!(w, "<pre class=\"rust typedef\">"); render_attributes(w, it, false); write!( @@ -4040,7 +4068,7 @@ fn item_typedef(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Typed render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn item_foreign_type(w: &mut Buffer, cx: &Context, it: &clean::Item, cache: &Cache) { +fn item_foreign_type(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, cache: &Cache) { writeln!(w, "<pre class=\"rust foreigntype\">extern {{"); render_attributes(w, it, false); write!( @@ -4055,7 +4083,7 @@ fn item_foreign_type(w: &mut Buffer, cx: &Context, it: &clean::Item, cache: &Cac render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn print_sidebar(cx: &Context, it: &clean::Item, buffer: &mut Buffer, cache: &Cache) { +fn print_sidebar(cx: &Context<'_>, it: &clean::Item, buffer: &mut Buffer, cache: &Cache) { let parentlen = cx.current.len() - if it.is_mod() { 1 } else { 0 }; if it.is_struct() @@ -4686,7 +4714,7 @@ fn sidebar_foreign_type(buf: &mut Buffer, it: &clean::Item) { } } -fn item_macro(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Macro) { +fn item_macro(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, t: &clean::Macro) { wrap_into_docblock(w, |w| { w.write_str(&highlight::render_with_highlighting( t.source.clone(), @@ -4698,7 +4726,7 @@ fn item_macro(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Macro) document(w, cx, it, None) } -fn item_proc_macro(w: &mut Buffer, cx: &Context, it: &clean::Item, m: &clean::ProcMacro) { +fn item_proc_macro(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, m: &clean::ProcMacro) { let name = it.name.as_ref().expect("proc-macros always have names"); match m.kind { MacroKind::Bang => { @@ -4728,12 +4756,12 @@ fn item_proc_macro(w: &mut Buffer, cx: &Context, it: &clean::Item, m: &clean::Pr document(w, cx, it, None) } -fn item_primitive(w: &mut Buffer, cx: &Context, it: &clean::Item, cache: &Cache) { +fn item_primitive(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, cache: &Cache) { document(w, cx, it, None); render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All, cache) } -fn item_keyword(w: &mut Buffer, cx: &Context, it: &clean::Item) { +fn item_keyword(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item) { document(w, cx, it, None) } diff --git a/src/librustdoc/html/sources.rs b/src/librustdoc/html/sources.rs index b6c3300906b..87934c8a0e5 100644 --- a/src/librustdoc/html/sources.rs +++ b/src/librustdoc/html/sources.rs @@ -15,7 +15,7 @@ use std::path::{Component, Path, PathBuf}; crate fn render( dst: &Path, - scx: &mut SharedContext, + scx: &mut SharedContext<'_>, krate: clean::Crate, ) -> Result<clean::Crate, Error> { info!("emitting source files"); @@ -26,14 +26,14 @@ crate fn render( } /// Helper struct to render all source code to HTML pages -struct SourceCollector<'a> { - scx: &'a mut SharedContext, +struct SourceCollector<'a, 'tcx> { + scx: &'a mut SharedContext<'tcx>, /// Root destination to place all HTML output into dst: PathBuf, } -impl<'a> DocFolder for SourceCollector<'a> { +impl DocFolder for SourceCollector<'_, '_> { fn fold_item(&mut self, item: clean::Item) -> Option<clean::Item> { // If we're not rendering sources, there's nothing to do. // If we're including source files, and we haven't seen this file yet, @@ -69,9 +69,9 @@ impl<'a> DocFolder for SourceCollector<'a> { } } -impl<'a> SourceCollector<'a> { +impl SourceCollector<'_, '_> { fn sess(&self) -> &Session { - &self.scx.sess + &self.scx.tcx.sess } /// Renders the given filename into its corresponding HTML source file. diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 809cfb9d743..c362b9d2b96 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -14,7 +14,7 @@ use crate::formats::item_type::ItemType; use crate::json::types::*; use crate::json::JsonRenderer; -impl JsonRenderer { +impl JsonRenderer<'_> { pub(super) fn convert_item(&self, item: clean::Item) -> Option<Item> { let item_type = ItemType::from(&item); let clean::Item { @@ -57,10 +57,10 @@ impl JsonRenderer { } fn convert_span(&self, span: clean::Span) -> Option<Span> { - match span.filename(&self.sess) { + match span.filename(self.sess()) { rustc_span::FileName::Real(name) => { - let hi = span.hi(&self.sess); - let lo = span.lo(&self.sess); + let hi = span.hi(self.sess()); + let lo = span.lo(self.sess()); Some(Span { filename: match name { rustc_span::RealFileName::Named(path) => path, diff --git a/src/librustdoc/json/mod.rs b/src/librustdoc/json/mod.rs index 3d970918407..dc2bc14e7ce 100644 --- a/src/librustdoc/json/mod.rs +++ b/src/librustdoc/json/mod.rs @@ -13,7 +13,6 @@ use std::path::PathBuf; use std::rc::Rc; use rustc_data_structures::fx::FxHashMap; -use rustc_data_structures::sync::Lrc; use rustc_middle::ty; use rustc_session::Session; use rustc_span::edition::Edition; @@ -26,8 +25,8 @@ use crate::formats::FormatRenderer; use crate::html::render::cache::ExternalLocation; #[derive(Clone)] -crate struct JsonRenderer { - sess: Lrc<Session>, +crate struct JsonRenderer<'tcx> { + tcx: ty::TyCtxt<'tcx>, /// A mapping of IDs that contains all local items for this crate which gets output as a top /// level field of the JSON blob. index: Rc<RefCell<FxHashMap<types::Id, types::Item>>>, @@ -35,7 +34,11 @@ crate struct JsonRenderer { out_path: PathBuf, } -impl JsonRenderer { +impl JsonRenderer<'_> { + fn sess(&self) -> &Session { + self.tcx.sess + } + fn get_trait_implementors( &mut self, id: rustc_span::def_id::DefId, @@ -121,19 +124,19 @@ impl JsonRenderer { } } -impl FormatRenderer for JsonRenderer { +impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> { fn init( krate: clean::Crate, options: RenderOptions, _render_info: RenderInfo, _edition: Edition, _cache: &mut Cache, - tcx: ty::TyCtxt<'_>, + tcx: ty::TyCtxt<'tcx>, ) -> Result<(Self, clean::Crate), Error> { debug!("Initializing json renderer"); Ok(( JsonRenderer { - sess: tcx.sess, + tcx, index: Rc::new(RefCell::new(FxHashMap::default())), out_path: options.output, }, diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index caa0706fd2b..2d3b4f87068 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -64,6 +64,7 @@ use std::process; use rustc_driver::abort_on_err; use rustc_errors::ErrorReported; +use rustc_interface::interface; use rustc_middle::ty; use rustc_session::config::{make_crate_type_option, ErrorOutputType, RustcOptGroup}; use rustc_session::getopts; @@ -468,13 +469,13 @@ fn wrap_return(diag: &rustc_errors::Handler, res: Result<(), String>) -> MainRes } } -fn run_renderer<T: formats::FormatRenderer>( +fn run_renderer<'tcx, T: formats::FormatRenderer<'tcx>>( krate: clean::Crate, renderopts: config::RenderOptions, render_info: config::RenderInfo, diag: &rustc_errors::Handler, edition: rustc_span::edition::Edition, - tcx: ty::TyCtxt<'_>, + tcx: ty::TyCtxt<'tcx>, ) -> MainResult { match formats::run_format::<T>(krate, renderopts, render_info, &diag, edition, tcx) { Ok(_) => Ok(()), @@ -577,7 +578,7 @@ fn main_options(options: config::Options) -> MainResult { let diag = core::new_handler(error_format, None, &debugging_options); match output_format { None | Some(config::OutputFormat::Html) => sess.time("render_html", || { - run_renderer::<html::render::Context>( + run_renderer::<html::render::Context<'_>>( krate, render_opts, render_info, @@ -587,7 +588,7 @@ fn main_options(options: config::Options) -> MainResult { ) }), Some(config::OutputFormat::Json) => sess.time("render_json", || { - run_renderer::<json::JsonRenderer>( + run_renderer::<json::JsonRenderer<'_>>( krate, render_opts, render_info, |
