From 91131bb0ca52b0f3fb13ef8ccdf17e3a58b240f6 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 17 Jul 2026 15:13:23 -0700 Subject: [PATCH 01/11] rustdoc: fix `--enable-index-page` with finalize --- src/librustdoc/html/render/write_shared.rs | 58 +++++++++++---------- src/librustdoc/lib.rs | 60 +++++++++++++++++----- 2 files changed, 78 insertions(+), 40 deletions(-) diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 56059c6619954..69a1cbaf2874f 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -111,28 +111,9 @@ pub(crate) fn write_shared( cx.shared.layout.css_file_extension.as_deref(), &cx.shared.resource_suffix, cx.info.include_sources, + &cx.shared.layout, + cx.shared.tcx, )?; - match &opt.index_page { - Some(index_page) if opt.enable_index_page => { - let mut md_opts = opt.clone(); - md_opts.output = cx.dst.clone(); - md_opts.external_html = cx.shared.layout.external_html.clone(); - let file = try_err!(cx.sess().source_map().load_file(&index_page), &index_page); - try_err!( - crate::markdown::render_and_write(file, md_opts, cx.shared.edition()), - &index_page - ); - } - None if opt.enable_index_page => { - write_rendered_cci::( - || CratesIndexPart::blank(cx), - &cx.dst, - &crates, - &opt.should_merge, - )?; - } - _ => {} // they don't want an index page - } } cx.shared.fs.set_sync_only(false); @@ -150,9 +131,32 @@ pub(crate) fn write_not_crate_specific( css_file_extension: Option<&Path>, resource_suffix: &str, include_sources: bool, + layout: &layout::Layout, + tcx: TyCtxt<'_>, ) -> Result<(), Error> { write_rendered_cross_crate_info(crates, dst, opt, include_sources, resource_suffix)?; write_resources(dst, opt, style_files, css_file_extension, resource_suffix)?; + match &opt.index_page { + Some(index_page) if opt.enable_index_page => { + let mut md_opts = opt.clone(); + md_opts.output = dst.to_path_buf(); + md_opts.external_html = layout.external_html.clone(); + let file = try_err!(tcx.sess.source_map().load_file(&index_page), &index_page); + try_err!( + crate::markdown::render_and_write(file, md_opts, tcx.sess.edition()), + &index_page + ); + } + None if opt.enable_index_page => { + write_rendered_cci::( + || CratesIndexPart::blank(layout, opt, style_files), + &dst, + &crates, + &opt.should_merge, + )?; + } + _ => {} // they don't want an index page + } Ok(()) } @@ -399,19 +403,21 @@ impl CciPart for CratesIndexPart { } impl CratesIndexPart { - fn blank(cx: &Context<'_>) -> SortedTemplate<::FileFormat> { + fn blank( + layout: &layout::Layout, + opt: &RenderOptions, + style_files: &[StylePath], + ) -> SortedTemplate<::FileFormat> { let page = layout::Page { title: "Index of crates", short_title: "Crates", css_class: "mod sys", root_path: "./", - static_root_path: cx.shared.static_root_path.as_deref(), + static_root_path: opt.static_root_path.as_deref(), description: "List of crates", - resource_suffix: &cx.shared.resource_suffix, + resource_suffix: &opt.resource_suffix, rust_logo: true, }; - let layout = &cx.shared.layout; - let style_files = &cx.shared.style_files; const DELIMITER: &str = "\u{FFFC}"; // users are being naughty if they have this let content = format_args!( "
\ diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index be830cad6c735..321cafb8f434f 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -77,7 +77,7 @@ use rustc_errors::DiagCtxtHandle; use rustc_hir::def_id::LOCAL_CRATE; use rustc_interface::interface; use rustc_middle::ty::TyCtxt; -use rustc_session::config::{ErrorOutputType, RustcOptGroup, make_crate_type_option}; +use rustc_session::config::{ErrorOutputType, Input, RustcOptGroup, make_crate_type_option}; use rustc_session::{EarlyDiagCtxt, getopts}; use rustc_span::{BytePos, Span, SyntaxContext}; use tracing::info; @@ -772,7 +772,10 @@ fn run_renderer< /// Renders and writes cross-crate info files, like the search index. This function exists so that /// we can run rustdoc without a crate root in the `--merge=finalize` mode. Cross-crate info files /// discovered via `--read-doc-meta-dir` are combined and written to the doc root. -fn run_merge_finalize(opt: config::RenderOptions) -> Result<(), error::Error> { +fn run_merge_finalize( + opt: config::RenderOptions, + compiler: &interface::Compiler, +) -> Result<(), error::Error> { assert!( opt.should_merge.write_rendered_cci, "config.rs only allows us to return InputMode::NoInputMergeFinalize if --merge=finalize" @@ -783,16 +786,37 @@ fn run_merge_finalize(opt: config::RenderOptions) -> Result<(), error::Error> { ); let crates = html::render::CrateInfo::read_many(&opt.include_parts_dir)?; let include_sources = !opt.html_no_source; - html::render::write_not_crate_specific( - &crates, - &opt.output, - &opt, - &opt.themes, - opt.extension_css.as_deref(), - &opt.resource_suffix, - include_sources, - )?; - Ok(()) + + let krate = ast::Crate { + attrs: Default::default(), + items: Default::default(), + spans: Default::default(), + id: ast::DUMMY_NODE_ID, + is_placeholder: false, + }; + rustc_interface::create_and_enter_global_ctxt(compiler, krate, |tcx| { + html::render::write_not_crate_specific( + &crates, + &opt.output, + &opt, + &opt.themes, + opt.extension_css.as_deref(), + &opt.resource_suffix, + include_sources, + &crate::html::layout::Layout { + logo: String::new(), + favicon: String::new(), + external_html: opt.external_html.clone(), + default_settings: opt.default_settings.clone(), + krate: String::new(), + krate_version: String::new(), + css_file_extension: opt.extension_css.clone(), + scrape_examples_extension: false, + }, + tcx, + )?; + Ok(()) + }) } fn main_args(early_dcx: &mut EarlyDiagCtxt, at_args: &[String]) { @@ -834,10 +858,18 @@ fn main_args(early_dcx: &mut EarlyDiagCtxt, at_args: &[String]) { let input = match input { config::InputMode::HasFile(input) => input, config::InputMode::NoInputMergeFinalize => { + let config = core::create_config( + Input::Str { + name: rustc_span::FileName::Custom(String::new()), + input: String::new(), + }, + options, + &render_options, + ); return wrap_return( dcx, - rustc_span::create_session_globals_then(options.edition, &[], None, || { - run_merge_finalize(render_options) + interface::run_compiler(config, |compiler| { + run_merge_finalize(render_options, compiler) .map_err(|e| format!("could not write merged cross-crate info: {e}")) }), ); From a36c898d0570a4336dd00dbd91015ef8b77e2635 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 17 Jul 2026 12:42:42 -0700 Subject: [PATCH 02/11] rustdoc: move CCI tests to run-make Since we're getting rid of the ability to do finalize and document at the same time, we can't actually do this in the rustdoc-html test build system and need to do it this way instead. --- .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../indigo.rs | 0 .../quebec.rs | 0 .../romeo.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../rustdoc-merge-cross-crate-info-no-merge-separate}/quebec.rs | 0 .../rustdoc-merge-cross-crate-info-no-merge-separate}/sierra.rs | 0 .../rustdoc-merge-cross-crate-info-no-merge-separate}/tango.rs | 0 .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../rustdoc-merge-cross-crate-info-overwrite}/quebec.rs | 0 .../rustdoc-merge-cross-crate-info-overwrite}/sierra.rs | 0 .../rustdoc-merge-cross-crate-info-overwrite}/tango.rs | 0 .../quebec.rs | 0 .../quebec.rs | 0 .../quebec.rs | 0 .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../quebec.rs | 0 .../sierra.rs | 0 .../tango.rs | 0 .../rustdoc-merge-cross-crate-info-transitive-no-info}/quebec.rs | 0 .../rustdoc-merge-cross-crate-info-transitive-no-info}/sierra.rs | 0 .../rustdoc-merge-cross-crate-info-transitive-no-info}/tango.rs | 0 .../rustdoc-merge-cross-crate-info-two-separate-out-dir}/echo.rs | 0 .../foxtrot.rs | 0 37 files changed, 0 insertions(+), 0 deletions(-) rename tests/{rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary => run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write => run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary => run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs => run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs}/indigo.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary => run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary => run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs}/romeo.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary => run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary => run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary => run-make/rustdoc-merge-cross-crate-info-no-merge-separate}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-separate => run-make/rustdoc-merge-cross-crate-info-no-merge-separate}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary => run-make/rustdoc-merge-cross-crate-info-no-merge-separate}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary => run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-write-anyway => run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary => run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite-but-include}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-include => run-make/rustdoc-merge-cross-crate-info-overwrite-but-include}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite-but-include}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-separate => run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite => run-make/rustdoc-merge-cross-crate-info-overwrite}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/overwrite/auxiliary => run-make/rustdoc-merge-cross-crate-info-overwrite}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/single-crate-finalize => run-make/rustdoc-merge-cross-crate-info-single-crate-finalize}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/single-crate-read-write => run-make/rustdoc-merge-cross-crate-info-single-crate-read-write}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/single-crate-write-anyway => run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-merge-none}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-none => run-make/rustdoc-merge-cross-crate-info-transitive-merge-none}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-merge-none}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-read-write => run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-no-info}/quebec.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-no-info => run-make/rustdoc-merge-cross-crate-info-transitive-no-info}/sierra.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary => run-make/rustdoc-merge-cross-crate-info-transitive-no-info}/tango.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/two-separate-out-dir => run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir}/echo.rs (100%) rename tests/{rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary => run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir}/foxtrot.rs (100%) diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/cargo-transitive-read-write/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/romeo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/romeo.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/kitchen-sink-separate-dirs/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-separate/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/no-merge-write-anyway/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-include/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite-but-separate/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/overwrite/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-finalize/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/single-crate-finalize/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-read-write/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/single-crate-read-write/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/single-crate-write-anyway/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/single-crate-write-anyway/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-none/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-merge-read-write/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/quebec.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/sierra.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/transitive-no-info/auxiliary/tango.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/echo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/echo.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs diff --git a/tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary/foxtrot.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs similarity index 100% rename from tests/rustdoc-html/merge-cross-crate-info/two-separate-out-dir/auxiliary/foxtrot.rs rename to tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs From 6887d4d453cf5e61430a021898326f5689f26411 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 17 Jul 2026 15:12:37 -0700 Subject: [PATCH 03/11] rustdoc: write `rmake` scripts to test CCI --- .../rmake.rs | 59 +++++++++++ .../rmake.rs | 99 +++++++++++++++++++ .../rmake.rs | 51 ++++++++++ .../rmake.rs | 48 +++++++++ .../rmake.rs | 57 +++++++++++ .../rmake.rs | 58 +++++++++++ .../rmake.rs | 54 ++++++++++ .../rmake.rs | 27 +++++ .../rmake.rs | 17 ++++ .../quebec.rs | 13 --- .../rmake.rs | 58 +++++++++++ .../rmake.rs | 48 +++++++++ .../rmake.rs | 48 +++++++++ .../rmake.rs | 41 ++++++++ 14 files changed, 665 insertions(+), 13 deletions(-) create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs delete mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs create mode 100644 tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs new file mode 100644 index 0000000000000..bafd625dbc8b2 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs @@ -0,0 +1,59 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("quebec.json").exists()); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("tango.json").exists()); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("sierra.json").exists()); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs new file mode 100644 index 0000000000000..d92ac11b56c58 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs @@ -0,0 +1,99 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir("quebec-out") + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec")) + .arg("--enable-index-page") + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir("tango-out") + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/tango")) + .arg("--enable-index-page") + .run(); + + rustc() + .input("sierra.rs") + .crate_name("sierra") + .crate_type("rlib") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .run(); + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir("sierra-out") + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra")) + .arg("--enable-index-page") + .run(); + + rustc() + .input("romeo.rs") + .crate_name("romeo") + .crate_type("rlib") + .extern_("sierra", rust_lib_name("sierra")) + .library_search_path(cwd()) + .run(); + rustdoc() + .input("romeo.rs") + .crate_name("romeo") + .extern_("sierra", rust_lib_name("sierra")) + .library_search_path(cwd()) + .out_dir("romeo-out") + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/romeo")) + .arg("--enable-index-page") + .run(); + + rustdoc() + .input("indigo.rs") + .crate_name("indigo") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/indigo")) + .arg("--enable-index-page") + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg("--read-doc-meta-dir=info/doc.parts/tango") + .arg("--read-doc-meta-dir=info/doc.parts/romeo") + .arg("--read-doc-meta-dir=info/doc.parts/quebec") + .arg("--read-doc-meta-dir=info/doc.parts/sierra") + .arg("--read-doc-meta-dir=info/doc.parts/indigo") + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); + htmldocck().arg(&out_dir).arg("indigo.rs").run(); + htmldocck().arg(&out_dir).arg("romeo.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs new file mode 100644 index 0000000000000..d996fecc94160 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs @@ -0,0 +1,51 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("quebec.json").exists()); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("tango.json").exists()); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("sierra.json").exists()); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs new file mode 100644 index 0000000000000..7618e0c711fd5 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs @@ -0,0 +1,48 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rfs, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=parts-wrong") + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=parts-wrong") + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=parts-wrong") + .run(); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs new file mode 100644 index 0000000000000..e15e6dab4f82d --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs @@ -0,0 +1,57 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec")) + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/tango")) + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra")) + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--read-doc-meta-dir=info/doc.parts/tango")) + .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra")) + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs new file mode 100644 index 0000000000000..ae0b55dc8d2de --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs @@ -0,0 +1,58 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec")) + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/tango")) + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra")) + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--read-doc-meta-dir=info/doc.parts/tango")) + .arg(format!("--read-doc-meta-dir=info/doc.parts/quebec")) + .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra")) + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs new file mode 100644 index 0000000000000..c99c1c2f8e623 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs @@ -0,0 +1,54 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts/quebec.d")) + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir=info/doc.parts")) + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--read-doc-meta-dir=info/doc.parts")) + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .run(); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs new file mode 100644 index 0000000000000..18a1e3fe78a6c --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs @@ -0,0 +1,27 @@ +//@ needs-target-std + +use run_make_support::{htmldocck, path, rustc, rustdoc}; + +fn main() { + let parts_out_dir = path("parts"); + let out_dir = path("out"); + + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--write-doc-meta-dir={}", parts_out_dir.display())) + .run(); + assert!(parts_out_dir.join("quebec.json").exists()); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("quebec.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs new file mode 100644 index 0000000000000..f1f3fb4ae3e3d --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs @@ -0,0 +1,17 @@ +//@ needs-target-std + +use run_make_support::{htmldocck, path, rustc, rustdoc}; + +fn main() { + let out_dir = path("out"); + + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--enable-index-page") + .run(); + + htmldocck().arg(&out_dir).arg("quebec.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs deleted file mode 100644 index fde3635e62250..0000000000000 --- a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-write-anyway/quebec.rs +++ /dev/null @@ -1,13 +0,0 @@ -//@ doc-flags:--read-doc-meta-dir=. -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - -//@ has index.html -//@ has index.html '//h1' 'List of all crates' -//@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' -//@ has quebec/struct.Quebec.html -//@ hasraw search.index/name/*.js 'Quebec' - -// we can --write-doc-meta-dir, but that doesn't do anything other than create -// the file -pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs new file mode 100644 index 0000000000000..d61f7f3bb10d3 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs @@ -0,0 +1,58 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/quebec") + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/tango") + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/sierra") + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg("--read-doc-meta-dir=info/doc.parts/tango") + .arg("--read-doc-meta-dir=info/doc.parts/quebec") + .arg("--read-doc-meta-dir=info/doc.parts/sierra") + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs new file mode 100644 index 0000000000000..019d497da1c65 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs @@ -0,0 +1,48 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--enable-index-page") + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--enable-index-page") + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--enable-index-page") + .run(); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs new file mode 100644 index 0000000000000..dcbc605be4629 --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs @@ -0,0 +1,48 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + + rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); + rustdoc() + .input("quebec.rs") + .crate_name("quebec") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/quebec") + .run(); + + rustc() + .input("tango.rs") + .crate_name("tango") + .crate_type("rlib") + .extern_("quebec", rust_lib_name("quebec")) + .run(); + rustdoc() + .input("tango.rs") + .crate_name("tango") + .extern_("quebec", rust_lib_name("quebec")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/tango") + .run(); + + rustdoc() + .input("sierra.rs") + .crate_name("sierra") + .extern_("tango", rust_lib_name("tango")) + .library_search_path(cwd()) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/sierra") + .run(); + + htmldocck().arg(&out_dir).arg("tango.rs").run(); + htmldocck().arg(&out_dir).arg("quebec.rs").run(); + htmldocck().arg(&out_dir).arg("sierra.rs").run(); +} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs new file mode 100644 index 0000000000000..5c46c1751d6df --- /dev/null +++ b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs @@ -0,0 +1,41 @@ +//@ needs-target-std + +use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; + +fn main() { + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + let lib_dir = path("lib"); + let out_dir = path("out"); + let alt_out_dir = path("alt-out"); + + rustc().input("foxtrot.rs").crate_name("foxtrot").crate_type("rlib").run(); + rustdoc() + .input("foxtrot.rs") + .crate_name("foxtrot") + .out_dir(&alt_out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/foxtrot") + .run(); + + rustdoc() + .input("echo.rs") + .crate_name("echo") + .extern_("foxtrot", rust_lib_name("foxtrot")) + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg("--write-doc-meta-dir=info/doc.parts/echo") + .run(); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg("--read-doc-meta-dir=info/doc.parts/echo") + .arg("--read-doc-meta-dir=info/doc.parts/foxtrot") + .arg("--enable-index-page") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); + + htmldocck().arg(&out_dir).arg("echo.rs").run(); + htmldocck().arg(&out_dir).arg("foxtrot.rs").run(); +} From 32f1625a0e74204ba6bdcacce52edb66aa2ebb04 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 17 Jul 2026 15:34:13 -0700 Subject: [PATCH 04/11] Document the changed doc meta features --- src/doc/rustdoc/src/unstable-features.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/doc/rustdoc/src/unstable-features.md b/src/doc/rustdoc/src/unstable-features.md index 26985e67abb6e..4fad13c14eb9f 100644 --- a/src/doc/rustdoc/src/unstable-features.md +++ b/src/doc/rustdoc/src/unstable-features.md @@ -206,17 +206,15 @@ This is very easy to use in scripts that manually invoke rustdoc, but it's also performs O(crates) work on every crate, meaning it performs O(crates2) work. When `--write-doc-meta-dir` and/or `--read-doc-meta-dir` are supplied, this is turned off. -When `--write-doc-meta-dir` is supplied, rustdoc will write the crate's metadata to that directory. -If this parameter is supplied but `--read-doc-meta-dir` isn't, it runs in *intermediate mode*: -some pages may be written to the output dir, but there is a lot of functionality that won't work -until rustdoc is run in *finalize mode*. +When `--write-doc-meta-dir` is supplied, rustdoc will write the crate's shared metadata to +that directory. This is an *intermediate mode* where it may write some files to the doc output +directory, but some features won't work until it is finalized. -When `--read-doc-meta-dir` is supplied, rustdoc runs in *finalize mode*. It will read the data from -the supplied directory, and will write it to the doc output directory in the form that the web -frontend will use. +When `--read-doc-meta-dir` is supplied, it runs it in *finalize mode*. No crate source code is +passed to rustdoc when it runs in this mode. Multiple `--read-doc-meta-dir` can be passed to +rustdoc, so your build system can split the state between multiple directories if that helps. -If both `--write-doc-meta-dir` and `--read-doc-meta-dir` are specified, the crate metadata will be -written to both the HTML `--out-dir` and to the supplied `--write-doc-meta-dir`. +Both `--write-doc-meta-dir` and `--read-doc-meta-dir` can't be supplied at once. ```console $ rustdoc crate1.rs --out-dir=doc @@ -231,10 +229,13 @@ To delay shared-data merging until the end of a build, so that you only have to work, use `--write-doc-meta-dir` on every crate, and the last will use `--read-doc-meta-dir`. ```console -$ rustdoc +nightly crate1.rs --write-doc-meta=crate1.d -Zunstable-options +$ rustdoc +nightly crate1.rs --write-doc-meta-dir=crate1.d -Zunstable-options $ cat doc/search.index/crateNames/* cat: 'doc/search.index/crateNames/*': No such file or directory -$ rustdoc +nightly crate2.rs --read-doc-meta=crate1.d -Zunstable-options +$ rustdoc +nightly crate2.rs --write-doc-meta-dir=crate2.d -Zunstable-options +$ cat doc/search.index/crateNames/* +cat: 'doc/search.index/crateNames/*': No such file or directory +$ rustdoc +nightly --read-doc-meta-dir=crate1.d --read-doc-meta-dir=crate2.d -Zunstable-options $ cat doc/search.index/crateNames/* rd_("fcrate1fcrate2") ``` From 18d6ebf012fbc3856e97200283d4eaddea862670 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 24 Jul 2026 21:59:39 -0700 Subject: [PATCH 05/11] Update src/doc/rustdoc/src/unstable-features.md Co-authored-by: Noah Lev <37223377+camelid@users.noreply.github.com> --- src/doc/rustdoc/src/unstable-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/rustdoc/src/unstable-features.md b/src/doc/rustdoc/src/unstable-features.md index 4fad13c14eb9f..992d8e84ad370 100644 --- a/src/doc/rustdoc/src/unstable-features.md +++ b/src/doc/rustdoc/src/unstable-features.md @@ -214,7 +214,7 @@ When `--read-doc-meta-dir` is supplied, it runs it in *finalize mode*. No crate passed to rustdoc when it runs in this mode. Multiple `--read-doc-meta-dir` can be passed to rustdoc, so your build system can split the state between multiple directories if that helps. -Both `--write-doc-meta-dir` and `--read-doc-meta-dir` can't be supplied at once. +`--write-doc-meta-dir` and `--read-doc-meta-dir` cannot both be passed to the same rustdoc invocation. ```console $ rustdoc crate1.rs --out-dir=doc From ac3994e2052a7c291f9e0a8e8df93b0adffa333e Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 24 Jul 2026 21:59:51 -0700 Subject: [PATCH 06/11] Update src/doc/rustdoc/src/unstable-features.md Co-authored-by: Noah Lev <37223377+camelid@users.noreply.github.com> --- src/doc/rustdoc/src/unstable-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/rustdoc/src/unstable-features.md b/src/doc/rustdoc/src/unstable-features.md index 992d8e84ad370..21351ff0cd646 100644 --- a/src/doc/rustdoc/src/unstable-features.md +++ b/src/doc/rustdoc/src/unstable-features.md @@ -210,7 +210,7 @@ When `--write-doc-meta-dir` is supplied, rustdoc will write the crate's shared m that directory. This is an *intermediate mode* where it may write some files to the doc output directory, but some features won't work until it is finalized. -When `--read-doc-meta-dir` is supplied, it runs it in *finalize mode*. No crate source code is +When `--read-doc-meta-dir` is supplied, rustdoc runs in *finalize mode*. No crate source code is passed to rustdoc when it runs in this mode. Multiple `--read-doc-meta-dir` can be passed to rustdoc, so your build system can split the state between multiple directories if that helps. From c352016f8aa7b01cfa240b89c56a4ea544a99644 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 24 Jul 2026 21:59:08 -0700 Subject: [PATCH 07/11] rustdoc: clean up unused `@` build diectives --- .../quebec.rs | 3 --- .../sierra.rs | 5 ----- .../tango.rs | 5 ----- .../indigo.rs | 12 ------------ .../quebec.rs | 5 ----- .../rmake.rs | 4 ---- .../romeo.rs | 7 ------- .../sierra.rs | 7 ------- .../tango.rs | 7 ------- .../quebec.rs | 5 ----- .../rmake.rs | 2 -- .../sierra.rs | 6 ------ .../tango.rs | 7 ------- .../quebec.rs | 4 ---- .../rmake.rs | 2 -- .../sierra.rs | 6 ------ .../tango.rs | 6 ------ .../quebec.rs | 4 ---- .../rmake.rs | 2 -- .../sierra.rs | 6 ------ .../tango.rs | 6 ------ .../quebec.rs | 5 ----- .../rmake.rs | 2 -- .../sierra.rs | 7 ------- .../tango.rs | 7 ------- .../quebec.rs | 4 ---- .../rmake.rs | 2 -- .../sierra.rs | 5 ----- .../tango.rs | 6 ------ .../quebec.rs | 3 --- .../quebec.rs | 3 --- .../quebec.rs | 4 ---- .../rmake.rs | 2 -- .../sierra.rs | 7 ------- .../tango.rs | 6 ------ .../quebec.rs | 3 --- .../rmake.rs | 2 -- .../sierra.rs | 5 ----- .../tango.rs | 5 ----- .../quebec.rs | 4 ---- .../rmake.rs | 2 -- .../sierra.rs | 6 ------ .../tango.rs | 6 ------ .../echo.rs | 5 ----- .../foxtrot.rs | 4 ---- .../rmake.rs | 1 - 46 files changed, 217 deletions(-) diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs index c4b3ce498576c..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs @@ -1,4 +1 @@ -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs index 10f12ad8d1184..ac75e2699eb15 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs @@ -1,8 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs index 299a673418713..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs @@ -1,7 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs index 986c58deb5d6b..fc609153dc69e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs @@ -1,15 +1,3 @@ -//@ aux-build:tango.rs -//@ aux-build:romeo.rs -//@ aux-build:quebec.rs -//@ aux-build:sierra.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/romeo -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/sierra -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html '//h1' 'List of all crates' //@ has index.html //@ has index.html '//ul[@class="all-items"]//a[@href="indigo/index.html"]' 'indigo' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs index d2af9af496bc3..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs @@ -1,6 +1 @@ -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs index d92ac11b56c58..d71ad416d741b 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs @@ -91,9 +91,5 @@ fn main() { .run(); output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); - htmldocck().arg(&out_dir).arg("sierra.rs").run(); htmldocck().arg(&out_dir).arg("indigo.rs").run(); - htmldocck().arg(&out_dir).arg("romeo.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs index bcccc05299a79..772119ef133c2 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs @@ -1,9 +1,2 @@ -//@ aux-build:sierra.rs -//@ build-aux-docs -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/romeo -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate sierra; pub type Romeo = sierra::Sierra; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs index 9d5e564720169..796f5118d28b9 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs @@ -1,10 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate tango; pub struct Sierra; impl tango::Tango for Sierra {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs index 577c486a3adfb..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs @@ -1,9 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs index d2af9af496bc3..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs @@ -1,6 +1 @@ -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs index d996fecc94160..0d09bf7a673f8 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs @@ -45,7 +45,5 @@ fn main() { .run(); assert!(parts_out_dir.join("sierra.json").exists()); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs index 9a6ca3c6dd41c..27a23f4197a27 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs @@ -1,9 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ !has index.html //@ has sierra/struct.Sierra.html //@ hasraw sierra/struct.Sierra.html 'Tango' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs index 577c486a3adfb..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs @@ -1,9 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs index 442eacb91f480..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs @@ -1,5 +1 @@ -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs index 7618e0c711fd5..20ca2b902e729 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs @@ -42,7 +42,5 @@ fn main() { .arg("--write-doc-meta-dir=parts-wrong") .run(); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs index 9d5a1a3c17bfa..8ed9fdd896152 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs @@ -1,9 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ !has index.html //@ has sierra/struct.Sierra.html //@ has tango/trait.Tango.html diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs index e10bab806ea0c..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs @@ -1,8 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs index 442eacb91f480..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs @@ -1,5 +1 @@ -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs index e15e6dab4f82d..2e03d89635614 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs @@ -51,7 +51,5 @@ fn main() { .run(); output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs index 2d94321ed7465..9a485b13e09b9 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs @@ -1,9 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has quebec/struct.Quebec.html //@ has sierra/struct.Sierra.html //@ has tango/trait.Tango.html diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs index e10bab806ea0c..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs @@ -1,8 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs index d2af9af496bc3..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs @@ -1,6 +1 @@ -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs index ae0b55dc8d2de..0732220e39125 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs @@ -52,7 +52,5 @@ fn main() { .run(); output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs index 6a2dbb1c31ccc..d4bc4f45104e0 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs @@ -1,10 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs index 577c486a3adfb..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs @@ -1,9 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs index 35098e62cede9..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs @@ -1,5 +1 @@ -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec.d -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs index c99c1c2f8e623..87b92e7701560 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs @@ -48,7 +48,5 @@ fn main() { .out_dir(&out_dir) .run(); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs index 57c9732ba8dd7..d95d1495a3210 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs @@ -1,8 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has quebec/struct.Quebec.html //@ has sierra/struct.Sierra.html //@ has tango/trait.Tango.html diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs index dcb7965dde86e..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs @@ -1,8 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs index c157380edf1f9..4ce2af25720e2 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs @@ -1,6 +1,3 @@ -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs index 4fd510e31227c..73a8bf1790491 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs @@ -1,6 +1,3 @@ -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs index 442eacb91f480..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs @@ -1,5 +1 @@ -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs index d61f7f3bb10d3..e5cc54a23b7b6 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs @@ -52,7 +52,5 @@ fn main() { .run(); output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs index 945e8cf84dc7d..c7a4971e243a1 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs @@ -1,10 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs index e10bab806ea0c..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs @@ -1,8 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs index c4b3ce498576c..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs @@ -1,4 +1 @@ -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs index 019d497da1c65..8dbfccce6b7ea 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs @@ -42,7 +42,5 @@ fn main() { .arg("--enable-index-page") .run(); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs index 67ce91d1e225a..adc143143bc28 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs @@ -1,8 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ has index.html //@ has index.html '//h1' 'List of all crates' //@ has index.html '//ul[@class="all-items"]//a[@href="quebec/index.html"]' 'quebec' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs index 299a673418713..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs @@ -1,7 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs index 442eacb91f480..3ef377298cc6e 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs @@ -1,5 +1 @@ -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/quebec -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - pub struct Quebec; diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs index dcbc605be4629..ee43a1fb99af5 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs @@ -42,7 +42,5 @@ fn main() { .arg("--write-doc-meta-dir=info/doc.parts/sierra") .run(); - htmldocck().arg(&out_dir).arg("tango.rs").run(); - htmldocck().arg(&out_dir).arg("quebec.rs").run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs index 61c60cf7c9e15..3a97632ab3896 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs @@ -1,9 +1,3 @@ -//@ aux-build:tango.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/sierra -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - //@ !has index.html //@ has sierra/struct.Sierra.html //@ has tango/trait.Tango.html diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs index e10bab806ea0c..a9a44e06c7797 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs @@ -1,8 +1,2 @@ -//@ aux-build:quebec.rs -//@ build-aux-docs -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/tango -//@ doc-flags:--enable-index-page -//@ doc-flags:-Zunstable-options - extern crate quebec; pub trait Tango {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs index 998bb559df8c1..50fd79fa1b818 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs @@ -1,8 +1,3 @@ -//@ aux-build:foxtrot.rs -//@ build-aux-docs -//@ doc-flags:--read-doc-meta-dir=info/doc.parts/foxtrot -//@ doc-flags:-Zunstable-options - //@ has echo/enum.Echo.html //@ hasraw echo/enum.Echo.html 'Foxtrot' //@ hasraw trait.impl/foxtrot/trait.Foxtrot.js 'enum.Echo.html' diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs index 713f8812a55a6..390cef74d4730 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs @@ -1,5 +1 @@ -//@ unique-doc-out-dir -//@ doc-flags:--write-doc-meta-dir=info/doc.parts/foxtrot -//@ doc-flags:-Zunstable-options - pub trait Foxtrot {} diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs index 5c46c1751d6df..2c4b0166f5684 100644 --- a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs +++ b/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs @@ -37,5 +37,4 @@ fn main() { output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("echo.rs").run(); - htmldocck().arg(&out_dir).arg("foxtrot.rs").run(); } From e03942b6ce03a6a01dc15738d2b44aae80e81383 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Sat, 25 Jul 2026 18:56:44 -0700 Subject: [PATCH 08/11] rustdoc: no `--read-doc-meta-dir` and `--write-doc-meta-dir` at once --- src/librustdoc/config.rs | 16 ++++++++++------ tests/rustdoc-ui/doc-meta-read-write-err.rs | 2 ++ tests/rustdoc-ui/doc-meta-read-write-err.stderr | 2 ++ 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 tests/rustdoc-ui/doc-meta-read-write-err.rs create mode 100644 tests/rustdoc-ui/doc-meta-read-write-err.stderr diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 840f9d025c3cf..12f0b7b38f37a 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -613,7 +613,10 @@ impl Options { Ok(include_parts_dir) => include_parts_dir, Err(e) => dcx.fatal(e), }; - let mut should_merge = compute_should_merge(matches); + let mut should_merge = match compute_should_merge(matches) { + Ok(should_merge) => should_merge, + Err(e) => dcx.fatal(e), + }; if parts_out_dir.is_none() && include_parts_dir.is_empty() { // we'll need to get rid of this stuff once Cargo stops using them parts_out_dir = @@ -1114,15 +1117,16 @@ pub(crate) struct ShouldMerge { /// Extracts read_rendered_cci and write_rendered_cci from command line arguments, or /// reports an error if an invalid option was provided -fn compute_should_merge(m: &getopts::Matches) -> ShouldMerge { +fn compute_should_merge(m: &getopts::Matches) -> Result { match (m.opt_present("read-doc-meta-dir"), m.opt_present("write-doc-meta-dir")) { // shared mode - (false, false) => ShouldMerge { read_rendered_cci: true, write_rendered_cci: true }, + (false, false) => Ok(ShouldMerge { read_rendered_cci: true, write_rendered_cci: true }), // intermediate mode - (false, true) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: false }, + (false, true) => Ok(ShouldMerge { read_rendered_cci: false, write_rendered_cci: false }), // finalize mode - (true, false) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }, - (true, true) => ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }, + (true, false) => Ok(ShouldMerge { read_rendered_cci: false, write_rendered_cci: true }), + // not valid + (true, true) => Err("cannot pass both --read-doc-meta-dir and --write-doc-meta-dir"), } } diff --git a/tests/rustdoc-ui/doc-meta-read-write-err.rs b/tests/rustdoc-ui/doc-meta-read-write-err.rs new file mode 100644 index 0000000000000..64a8ce4185b35 --- /dev/null +++ b/tests/rustdoc-ui/doc-meta-read-write-err.rs @@ -0,0 +1,2 @@ +//@ compile-flags:-Z unstable-options --read-doc-meta-dir . --write-doc-meta-dir . +//~? ERROR cannot pass both --read-doc-meta-dir and --write-doc-meta-dir diff --git a/tests/rustdoc-ui/doc-meta-read-write-err.stderr b/tests/rustdoc-ui/doc-meta-read-write-err.stderr new file mode 100644 index 0000000000000..818deb34300cd --- /dev/null +++ b/tests/rustdoc-ui/doc-meta-read-write-err.stderr @@ -0,0 +1,2 @@ +error: cannot pass both --read-doc-meta-dir and --write-doc-meta-dir + From d0fec149a1678668db744088cb6bad7899120c89 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Sat, 25 Jul 2026 19:18:55 -0700 Subject: [PATCH 09/11] rustdoc: move CCI run-make tests into the directory --- .../merge-cross-crate-info/cargo-transitive-read-write}/quebec.rs | 0 .../merge-cross-crate-info/cargo-transitive-read-write}/rmake.rs | 0 .../merge-cross-crate-info/cargo-transitive-read-write}/sierra.rs | 0 .../merge-cross-crate-info/cargo-transitive-read-write}/tango.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/indigo.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/quebec.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/rmake.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/romeo.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/sierra.rs | 0 .../merge-cross-crate-info/kitchen-sink-separate-dirs}/tango.rs | 0 .../merge-cross-crate-info/no-merge-separate}/quebec.rs | 0 .../merge-cross-crate-info/no-merge-separate}/rmake.rs | 0 .../merge-cross-crate-info/no-merge-separate}/sierra.rs | 0 .../merge-cross-crate-info/no-merge-separate}/tango.rs | 0 .../merge-cross-crate-info/no-merge-write-anyway}/quebec.rs | 0 .../merge-cross-crate-info/no-merge-write-anyway}/rmake.rs | 0 .../merge-cross-crate-info/no-merge-write-anyway}/sierra.rs | 0 .../merge-cross-crate-info/no-merge-write-anyway}/tango.rs | 0 .../merge-cross-crate-info/overwrite-but-include}/quebec.rs | 0 .../merge-cross-crate-info/overwrite-but-include}/rmake.rs | 0 .../merge-cross-crate-info/overwrite-but-include}/sierra.rs | 0 .../merge-cross-crate-info/overwrite-but-include}/tango.rs | 0 .../merge-cross-crate-info/overwrite-but-separate}/quebec.rs | 0 .../merge-cross-crate-info/overwrite-but-separate}/rmake.rs | 0 .../merge-cross-crate-info/overwrite-but-separate}/sierra.rs | 0 .../merge-cross-crate-info/overwrite-but-separate}/tango.rs | 0 .../merge-cross-crate-info/overwrite}/quebec.rs | 0 .../merge-cross-crate-info/overwrite}/rmake.rs | 0 .../merge-cross-crate-info/overwrite}/sierra.rs | 0 .../merge-cross-crate-info/overwrite}/tango.rs | 0 .../merge-cross-crate-info/single-crate-finalize}/quebec.rs | 0 .../merge-cross-crate-info/single-crate-finalize}/rmake.rs | 0 .../merge-cross-crate-info/single-crate-read-write}/quebec.rs | 0 .../merge-cross-crate-info/single-crate-read-write}/rmake.rs | 0 .../merge-cross-crate-info/transitive-merge-none}/quebec.rs | 0 .../merge-cross-crate-info/transitive-merge-none}/rmake.rs | 0 .../merge-cross-crate-info/transitive-merge-none}/sierra.rs | 0 .../merge-cross-crate-info/transitive-merge-none}/tango.rs | 0 .../merge-cross-crate-info/transitive-merge-read-write}/quebec.rs | 0 .../merge-cross-crate-info/transitive-merge-read-write}/rmake.rs | 0 .../merge-cross-crate-info/transitive-merge-read-write}/sierra.rs | 0 .../merge-cross-crate-info/transitive-merge-read-write}/tango.rs | 0 .../merge-cross-crate-info/transitive-no-info}/quebec.rs | 0 .../merge-cross-crate-info/transitive-no-info}/rmake.rs | 0 .../merge-cross-crate-info/transitive-no-info}/sierra.rs | 0 .../merge-cross-crate-info/transitive-no-info}/tango.rs | 0 .../merge-cross-crate-info/two-separate-out-dir}/echo.rs | 0 .../merge-cross-crate-info/two-separate-out-dir}/foxtrot.rs | 0 .../merge-cross-crate-info/two-separate-out-dir}/rmake.rs | 0 49 files changed, 0 insertions(+), 0 deletions(-) rename tests/run-make/{rustdoc-merge-cross-crate-info-cargo-transitive-read-write => rustdoc/merge-cross-crate-info/cargo-transitive-read-write}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-cargo-transitive-read-write => rustdoc/merge-cross-crate-info/cargo-transitive-read-write}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-cargo-transitive-read-write => rustdoc/merge-cross-crate-info/cargo-transitive-read-write}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-cargo-transitive-read-write => rustdoc/merge-cross-crate-info/cargo-transitive-read-write}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/indigo.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/romeo.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs => rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-separate => rustdoc/merge-cross-crate-info/no-merge-separate}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-separate => rustdoc/merge-cross-crate-info/no-merge-separate}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-separate => rustdoc/merge-cross-crate-info/no-merge-separate}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-separate => rustdoc/merge-cross-crate-info/no-merge-separate}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-write-anyway => rustdoc/merge-cross-crate-info/no-merge-write-anyway}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-write-anyway => rustdoc/merge-cross-crate-info/no-merge-write-anyway}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-write-anyway => rustdoc/merge-cross-crate-info/no-merge-write-anyway}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-no-merge-write-anyway => rustdoc/merge-cross-crate-info/no-merge-write-anyway}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-include => rustdoc/merge-cross-crate-info/overwrite-but-include}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-include => rustdoc/merge-cross-crate-info/overwrite-but-include}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-include => rustdoc/merge-cross-crate-info/overwrite-but-include}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-include => rustdoc/merge-cross-crate-info/overwrite-but-include}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-separate => rustdoc/merge-cross-crate-info/overwrite-but-separate}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-separate => rustdoc/merge-cross-crate-info/overwrite-but-separate}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-separate => rustdoc/merge-cross-crate-info/overwrite-but-separate}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite-but-separate => rustdoc/merge-cross-crate-info/overwrite-but-separate}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite => rustdoc/merge-cross-crate-info/overwrite}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite => rustdoc/merge-cross-crate-info/overwrite}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite => rustdoc/merge-cross-crate-info/overwrite}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-overwrite => rustdoc/merge-cross-crate-info/overwrite}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-single-crate-finalize => rustdoc/merge-cross-crate-info/single-crate-finalize}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-single-crate-finalize => rustdoc/merge-cross-crate-info/single-crate-finalize}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-single-crate-read-write => rustdoc/merge-cross-crate-info/single-crate-read-write}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-single-crate-read-write => rustdoc/merge-cross-crate-info/single-crate-read-write}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-none => rustdoc/merge-cross-crate-info/transitive-merge-none}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-none => rustdoc/merge-cross-crate-info/transitive-merge-none}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-none => rustdoc/merge-cross-crate-info/transitive-merge-none}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-none => rustdoc/merge-cross-crate-info/transitive-merge-none}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-read-write => rustdoc/merge-cross-crate-info/transitive-merge-read-write}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-read-write => rustdoc/merge-cross-crate-info/transitive-merge-read-write}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-read-write => rustdoc/merge-cross-crate-info/transitive-merge-read-write}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-merge-read-write => rustdoc/merge-cross-crate-info/transitive-merge-read-write}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-no-info => rustdoc/merge-cross-crate-info/transitive-no-info}/quebec.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-no-info => rustdoc/merge-cross-crate-info/transitive-no-info}/rmake.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-no-info => rustdoc/merge-cross-crate-info/transitive-no-info}/sierra.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-transitive-no-info => rustdoc/merge-cross-crate-info/transitive-no-info}/tango.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-two-separate-out-dir => rustdoc/merge-cross-crate-info/two-separate-out-dir}/echo.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-two-separate-out-dir => rustdoc/merge-cross-crate-info/two-separate-out-dir}/foxtrot.rs (100%) rename tests/run-make/{rustdoc-merge-cross-crate-info-two-separate-out-dir => rustdoc/merge-cross-crate-info/two-separate-out-dir}/rmake.rs (100%) diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-cargo-transitive-read-write/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/indigo.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/indigo.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/romeo.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/romeo.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/romeo.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-kitchen-sink-separate-dirs/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-separate/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-no-merge-write-anyway/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-include/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite-but-separate/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-overwrite/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/overwrite/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-single-crate-finalize/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-single-crate-read-write/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/single-crate-read-write/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-none/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-merge-read-write/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/quebec.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/quebec.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/quebec.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/sierra.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/sierra.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/tango.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-transitive-no-info/tango.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/tango.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/echo.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/echo.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/foxtrot.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/foxtrot.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/foxtrot.rs diff --git a/tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs similarity index 100% rename from tests/run-make/rustdoc-merge-cross-crate-info-two-separate-out-dir/rmake.rs rename to tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs From 9d136ed4fe17bbc431424f8a0b0eebb393705b89 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Mon, 27 Jul 2026 20:28:49 -0700 Subject: [PATCH 10/11] rustdoc: stop constructing an unneeded synth Crate --- src/librustdoc/html/render/write_shared.rs | 12 ++--- src/librustdoc/lib.rs | 61 +++++++++------------- 2 files changed, 31 insertions(+), 42 deletions(-) diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 69a1cbaf2874f..8277cbb906d24 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -30,6 +30,7 @@ use rustc_data_structures::flock; use rustc_data_structures::fx::{FxHashSet, FxIndexMap, FxIndexSet}; use rustc_middle::ty::TyCtxt; use rustc_middle::ty::fast_reject::DeepRejectCtxt; +use rustc_session::Session; use rustc_span::Symbol; use rustc_span::def_id::DefId; use serde::de::DeserializeOwned; @@ -112,7 +113,7 @@ pub(crate) fn write_shared( &cx.shared.resource_suffix, cx.info.include_sources, &cx.shared.layout, - cx.shared.tcx, + cx.sess(), )?; } @@ -132,7 +133,7 @@ pub(crate) fn write_not_crate_specific( resource_suffix: &str, include_sources: bool, layout: &layout::Layout, - tcx: TyCtxt<'_>, + sess: &Session, ) -> Result<(), Error> { write_rendered_cross_crate_info(crates, dst, opt, include_sources, resource_suffix)?; write_resources(dst, opt, style_files, css_file_extension, resource_suffix)?; @@ -141,11 +142,8 @@ pub(crate) fn write_not_crate_specific( let mut md_opts = opt.clone(); md_opts.output = dst.to_path_buf(); md_opts.external_html = layout.external_html.clone(); - let file = try_err!(tcx.sess.source_map().load_file(&index_page), &index_page); - try_err!( - crate::markdown::render_and_write(file, md_opts, tcx.sess.edition()), - &index_page - ); + let file = try_err!(sess.source_map().load_file(&index_page), &index_page); + try_err!(crate::markdown::render_and_write(file, md_opts, sess.edition()), &index_page); } None if opt.enable_index_page => { write_rendered_cci::( diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 321cafb8f434f..4c0c80eb749a7 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -773,50 +773,41 @@ fn run_renderer< /// we can run rustdoc without a crate root in the `--merge=finalize` mode. Cross-crate info files /// discovered via `--read-doc-meta-dir` are combined and written to the doc root. fn run_merge_finalize( - opt: config::RenderOptions, + render_options: config::RenderOptions, compiler: &interface::Compiler, ) -> Result<(), error::Error> { assert!( - opt.should_merge.write_rendered_cci, + render_options.should_merge.write_rendered_cci, "config.rs only allows us to return InputMode::NoInputMergeFinalize if --merge=finalize" ); assert!( - !opt.should_merge.read_rendered_cci, + !render_options.should_merge.read_rendered_cci, "config.rs only allows us to return InputMode::NoInputMergeFinalize if --merge=finalize" ); - let crates = html::render::CrateInfo::read_many(&opt.include_parts_dir)?; - let include_sources = !opt.html_no_source; + let crates = html::render::CrateInfo::read_many(&render_options.include_parts_dir)?; + let include_sources = !render_options.html_no_source; - let krate = ast::Crate { - attrs: Default::default(), - items: Default::default(), - spans: Default::default(), - id: ast::DUMMY_NODE_ID, - is_placeholder: false, - }; - rustc_interface::create_and_enter_global_ctxt(compiler, krate, |tcx| { - html::render::write_not_crate_specific( - &crates, - &opt.output, - &opt, - &opt.themes, - opt.extension_css.as_deref(), - &opt.resource_suffix, - include_sources, - &crate::html::layout::Layout { - logo: String::new(), - favicon: String::new(), - external_html: opt.external_html.clone(), - default_settings: opt.default_settings.clone(), - krate: String::new(), - krate_version: String::new(), - css_file_extension: opt.extension_css.clone(), - scrape_examples_extension: false, - }, - tcx, - )?; - Ok(()) - }) + html::render::write_not_crate_specific( + &crates, + &render_options.output, + &render_options, + &render_options.themes, + render_options.extension_css.as_deref(), + &render_options.resource_suffix, + include_sources, + &crate::html::layout::Layout { + logo: String::new(), + favicon: String::new(), + external_html: render_options.external_html.clone(), + default_settings: render_options.default_settings.clone(), + krate: String::new(), + krate_version: String::new(), + css_file_extension: render_options.extension_css.clone(), + scrape_examples_extension: false, + }, + &compiler.sess, + )?; + Ok(()) } fn main_args(early_dcx: &mut EarlyDiagCtxt, at_args: &[String]) { From f73cd1ea801ef6443b1cf446cd957fc9b5ea0d2b Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Mon, 27 Jul 2026 20:49:01 -0700 Subject: [PATCH 11/11] rustdoc: remove unused code from rmake tests --- .../cargo-transitive-read-write/rmake.rs | 5 +---- .../kitchen-sink-separate-dirs/rmake.rs | 6 +----- .../no-merge-separate/rmake.rs | 2 -- .../no-merge-write-anyway/rmake.rs | 11 +++++------ .../overwrite-but-include/rmake.rs | 6 +----- .../overwrite-but-separate/rmake.rs | 6 +----- .../merge-cross-crate-info/overwrite/rmake.rs | 6 +----- .../single-crate-finalize/rmake.rs | 3 +-- .../transitive-merge-none/rmake.rs | 6 +----- .../transitive-merge-read-write/rmake.rs | 3 --- .../transitive-no-info/rmake.rs | 3 --- .../two-separate-out-dir/rmake.rs | 6 +----- tests/run-make/rustdoc/merge-dir-alias/rmake.rs | 12 ++++-------- tests/run-make/rustdoc/merge-dir/rmake.rs | 3 +-- 14 files changed, 18 insertions(+), 60 deletions(-) diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs index bafd625dbc8b2..6cfc6ed9230ec 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/cargo-transitive-read-write/rmake.rs @@ -3,9 +3,7 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -45,13 +43,12 @@ fn main() { .run(); assert!(parts_out_dir.join("sierra.json").exists()); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("tango.rs").run(); htmldocck().arg(&out_dir).arg("quebec.rs").run(); diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs index d71ad416d741b..0191e659c5eef 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/kitchen-sink-separate-dirs/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -79,7 +76,7 @@ fn main() { .arg("--enable-index-page") .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg("--read-doc-meta-dir=info/doc.parts/tango") @@ -89,7 +86,6 @@ fn main() { .arg("--read-doc-meta-dir=info/doc.parts/indigo") .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("indigo.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs index 0d09bf7a673f8..1d6e004b078f0 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-separate/rmake.rs @@ -3,9 +3,7 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs index 20ca2b902e729..84dfda3b040c0 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/no-merge-write-anyway/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rfs, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -14,7 +11,9 @@ fn main() { .crate_name("quebec") .out_dir(&out_dir) .arg("-Zunstable-options") - .arg("--write-doc-meta-dir=parts-wrong") + // all these invocations of rustdoc write the parts, + // but none of them ever reads them + .arg("--write-doc-meta-dir=parts-unused") .run(); rustc() @@ -29,7 +28,7 @@ fn main() { .extern_("quebec", rust_lib_name("quebec")) .out_dir(&out_dir) .arg("-Zunstable-options") - .arg("--write-doc-meta-dir=parts-wrong") + .arg("--write-doc-meta-dir=parts-unused") .run(); rustdoc() @@ -39,7 +38,7 @@ fn main() { .library_search_path(cwd()) .out_dir(&out_dir) .arg("-Zunstable-options") - .arg("--write-doc-meta-dir=parts-wrong") + .arg("--write-doc-meta-dir=parts-unused") .run(); htmldocck().arg(&out_dir).arg("sierra.rs").run(); diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs index 2e03d89635614..8b650055953fe 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-include/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -42,14 +39,13 @@ fn main() { .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra")) .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir=info/doc.parts/tango")) .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra")) .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs index 0732220e39125..537058d09f66a 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite-but-separate/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -42,7 +39,7 @@ fn main() { .arg(format!("--write-doc-meta-dir=info/doc.parts/sierra")) .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir=info/doc.parts/tango")) @@ -50,7 +47,6 @@ fn main() { .arg(format!("--read-doc-meta-dir=info/doc.parts/sierra")) .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs index 87b92e7701560..ced70ac3f526f 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/overwrite/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -32,13 +29,12 @@ fn main() { .arg(format!("--write-doc-meta-dir=info/doc.parts")) .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir=info/doc.parts")) .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); rustdoc() .input("sierra.rs") diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs index 18a1e3fe78a6c..79f05c37e3104 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/single-crate-finalize/rmake.rs @@ -15,13 +15,12 @@ fn main() { .run(); assert!(parts_out_dir.join("quebec.json").exists()); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("quebec.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs index e5cc54a23b7b6..28bbbc8fda039 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-none/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); @@ -42,7 +39,7 @@ fn main() { .arg("--write-doc-meta-dir=info/doc.parts/sierra") .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg("--read-doc-meta-dir=info/doc.parts/tango") @@ -50,7 +47,6 @@ fn main() { .arg("--read-doc-meta-dir=info/doc.parts/sierra") .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("sierra.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs index 8dbfccce6b7ea..f43d940a32af1 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-merge-read-write/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs index ee43a1fb99af5..bd8fd59ed1c2a 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/transitive-no-info/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); rustc().input("quebec.rs").crate_name("quebec").crate_type("rlib").run(); diff --git a/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs index 2c4b0166f5684..69275a28ca8f9 100644 --- a/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs +++ b/tests/run-make/rustdoc/merge-cross-crate-info/two-separate-out-dir/rmake.rs @@ -3,9 +3,6 @@ use run_make_support::{cwd, htmldocck, path, rust_lib_name, rustc, rustdoc}; fn main() { - let merged_dir = path("merged"); - let parts_out_dir = path("parts"); - let lib_dir = path("lib"); let out_dir = path("out"); let alt_out_dir = path("alt-out"); @@ -27,14 +24,13 @@ fn main() { .arg("--write-doc-meta-dir=info/doc.parts/echo") .run(); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg("--read-doc-meta-dir=info/doc.parts/echo") .arg("--read-doc-meta-dir=info/doc.parts/foxtrot") .arg("--enable-index-page") .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("echo.rs").run(); } diff --git a/tests/run-make/rustdoc/merge-dir-alias/rmake.rs b/tests/run-make/rustdoc/merge-dir-alias/rmake.rs index 8a5c1aa2af723..3e4941c7a8769 100644 --- a/tests/run-make/rustdoc/merge-dir-alias/rmake.rs +++ b/tests/run-make/rustdoc/merge-dir-alias/rmake.rs @@ -18,12 +18,11 @@ fn main() { .run(); assert!(parts_out_dir.join("dep1.json").exists()); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); rustdoc() .input("dep2.rs") @@ -33,12 +32,11 @@ fn main() { .run(); assert!(parts_out_dir.join("dep2.json").exists()); - let output2 = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .run(); - output2.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); rustdoc() .input("dep1.rs") @@ -48,12 +46,11 @@ fn main() { .run(); assert!(parts_out_dir.join("dep1.json").exists()); - let output3 = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .run(); - output3.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); // dep_missing is different, because --write-doc-meta-dir is not supplied rustdoc().input("dep_missing.rs").out_dir(&out_dir).run(); @@ -67,12 +64,11 @@ fn main() { .run(); assert!(parts_out_dir.join("dep1.json").exists()); - let output4 = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .run(); - output4.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("dep1.rs").run(); htmldocck().arg(&out_dir).arg("dep2.rs").run(); diff --git a/tests/run-make/rustdoc/merge-dir/rmake.rs b/tests/run-make/rustdoc/merge-dir/rmake.rs index d2d31138bf3c6..e0f144f6234f4 100644 --- a/tests/run-make/rustdoc/merge-dir/rmake.rs +++ b/tests/run-make/rustdoc/merge-dir/rmake.rs @@ -30,12 +30,11 @@ fn main() { rustdoc().input("dep_missing.rs").out_dir(&out_dir).run(); assert!(parts_out_dir.join("dep2.json").exists()); - let output = rustdoc() + rustdoc() .arg("-Zunstable-options") .out_dir(&out_dir) .arg(format!("--read-doc-meta-dir={}", parts_out_dir.display())) .run(); - output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); htmldocck().arg(&out_dir).arg("dep1.rs").run(); htmldocck().arg(&out_dir).arg("dep2.rs").run();