diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index bf14a17c076..e61b7a09038 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -361,7 +361,7 @@ fn run_test( for debugging_option_str in &options.debugging_opts_strs { compiler.arg("-Z").arg(&debugging_option_str); } - if no_run && !compile_fail { + if no_run && !compile_fail && options.persist_doctests.is_none() { compiler.arg("--emit=metadata"); } compiler.arg("--target").arg(match target { diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile b/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile new file mode 100644 index 00000000000..273c8980b02 --- /dev/null +++ b/src/test/run-make-fulldeps/doctests-keep-binaries/Makefile @@ -0,0 +1,21 @@ +include ../../run-make-fulldeps/tools.mk + +# Check that valid binaries are persisted by running them, regardless of whether the --run or --no-run option is used. + +all: run no_run + +run: + mkdir -p $(TMPDIR)/doctests + $(RUSTC) --crate-type rlib t.rs + $(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs + $(TMPDIR)/doctests/t_rs_2_0/rust_out + $(TMPDIR)/doctests/t_rs_8_0/rust_out + rm -rf $(TMPDIR)/doctests + +no_run: + mkdir -p $(TMPDIR)/doctests + $(RUSTC) --crate-type rlib t.rs + $(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs --no-run + $(TMPDIR)/doctests/t_rs_2_0/rust_out + $(TMPDIR)/doctests/t_rs_8_0/rust_out + rm -rf $(TMPDIR)/doctests diff --git a/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs b/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs new file mode 100644 index 00000000000..c38cf0a0b25 --- /dev/null +++ b/src/test/run-make-fulldeps/doctests-keep-binaries/t.rs @@ -0,0 +1,11 @@ +/// Fungle the foople. +/// ``` +/// t::foople(); +/// ``` +pub fn foople() {} + +/// Flomble the florp +/// ``` +/// t::florp(); +/// ``` +pub fn florp() {}