Skip to content

Commit 76ab62e

Browse files
committed
Fix O(tests) stack usage in edition 2024 mergeable doctests
1 parent 385970f commit 76ab62e

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

src/librustdoc/doctest/runner.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,19 +136,19 @@ mod __doctest_mod {{
136136
137137
#[rustc_main]
138138
fn main() -> std::process::ExitCode {{
139-
const TESTS: [test::TestDescAndFn; {nb_tests}] = [{ids}];
139+
let tests = vec![{ids}];
140140
let test_marker = std::ffi::OsStr::new(__doctest_mod::RUN_OPTION);
141141
let test_args = &[{test_args}];
142142
const ENV_BIN: &'static str = \"RUSTDOC_DOCTEST_BIN_PATH\";
143143
144144
if let Ok(binary) = std::env::var(ENV_BIN) {{
145145
let _ = crate::__doctest_mod::BINARY_PATH.set(binary.into());
146146
unsafe {{ std::env::remove_var(ENV_BIN); }}
147-
return std::process::Termination::report(test::test_main(test_args, Vec::from(TESTS), None));
147+
return std::process::Termination::report(test::test_main(test_args, tests, None));
148148
}} else if let Ok(nb_test) = std::env::var(__doctest_mod::RUN_OPTION) {{
149149
if let Ok(nb_test) = nb_test.parse::<usize>() {{
150-
if let Some(test) = TESTS.get(nb_test) {{
151-
if let test::StaticTestFn(f) = test.testfn {{
150+
if let Some(test) = tests.get(nb_test) {{
151+
if let test::StaticTestFn(f) = &test.testfn {{
152152
return std::process::Termination::report(f());
153153
}}
154154
}}
@@ -158,9 +158,8 @@ if let Ok(binary) = std::env::var(ENV_BIN) {{
158158
159159
eprintln!(\"WARNING: No rustdoc doctest environment variable provided so doctests will be run in \
160160
the same process\");
161-
std::process::Termination::report(test::test_main(test_args, Vec::from(TESTS), None))
161+
std::process::Termination::report(test::test_main(test_args, tests, None))
162162
}}",
163-
nb_tests = self.nb_tests,
164163
output = self.output,
165164
ids = self.ids,
166165
)

0 commit comments

Comments
 (0)