diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-09-22 17:17:43 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-22 17:17:43 +0200 |
| commit | de7065b7d809c7999d2f1b4c3a55d5dd4a175a21 (patch) | |
| tree | 56194751a9671189c75bde347b7b1df7ff924205 | |
| parent | dc176bd21617d3bc166ed6ce8f8a29227fe35287 (diff) | |
| parent | 42ebba214b3c570761dc99f5fc1517ad092778ac (diff) | |
| download | rust-de7065b7d809c7999d2f1b4c3a55d5dd4a175a21.tar.gz rust-de7065b7d809c7999d2f1b4c3a55d5dd4a175a21.zip | |
Rollup merge of #146828 - el-ev:issue146646, r=GuillaumeGomez
fix a crash in rustdoc merge finalize without input file - Closes rust-lang/rust#146646 `SerializedSearchIndex::union` calls `Symbol::intern`, requiring `SESSION_GLOBALS` to be set.
| -rw-r--r-- | src/librustdoc/lib.rs | 6 | ||||
| -rw-r--r-- | tests/run-make/rustdoc-merge-no-input-finalize/rmake.rs | 28 | ||||
| -rw-r--r-- | tests/run-make/rustdoc-merge-no-input-finalize/sierra.rs | 1 |
3 files changed, 33 insertions, 2 deletions
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 0ff1c090689..5d8f8f4bed1 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -836,8 +836,10 @@ fn main_args(early_dcx: &mut EarlyDiagCtxt, at_args: &[String]) { config::InputMode::NoInputMergeFinalize => { return wrap_return( dcx, - run_merge_finalize(render_options) - .map_err(|e| format!("could not write merged cross-crate info: {e}")), + rustc_span::create_session_globals_then(options.edition, &[], None, || { + run_merge_finalize(render_options) + .map_err(|e| format!("could not write merged cross-crate info: {e}")) + }), ); } }; diff --git a/tests/run-make/rustdoc-merge-no-input-finalize/rmake.rs b/tests/run-make/rustdoc-merge-no-input-finalize/rmake.rs new file mode 100644 index 00000000000..0b1e1948d5f --- /dev/null +++ b/tests/run-make/rustdoc-merge-no-input-finalize/rmake.rs @@ -0,0 +1,28 @@ +// Running --merge=finalize without an input crate root should not trigger ICE. +// Issue: https://github.com/rust-lang/rust/issues/146646 + +//@ needs-target-std + +use run_make_support::{path, rustdoc}; + +fn main() { + let out_dir = path("out"); + let merged_dir = path("merged"); + let parts_out_dir = path("parts"); + rustdoc() + .input("sierra.rs") + .out_dir(&out_dir) + .arg("-Zunstable-options") + .arg(format!("--parts-out-dir={}", parts_out_dir.display())) + .arg("--merge=none") + .run(); + assert!(parts_out_dir.join("crate-info").exists()); + + let output = rustdoc() + .arg("-Zunstable-options") + .out_dir(&out_dir) + .arg(format!("--include-parts-dir={}", parts_out_dir.display())) + .arg("--merge=finalize") + .run(); + output.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug."); +} diff --git a/tests/run-make/rustdoc-merge-no-input-finalize/sierra.rs b/tests/run-make/rustdoc-merge-no-input-finalize/sierra.rs new file mode 100644 index 00000000000..f8fc48341ed --- /dev/null +++ b/tests/run-make/rustdoc-merge-no-input-finalize/sierra.rs @@ -0,0 +1 @@ +pub struct Sierra; |
