diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index d67277289d4..b5f0a5713bd 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -728,17 +728,10 @@ pub fn link_binary(sess: Session, obj_filename: &Path, out_filename: &Path, lm: &LinkMeta) -> ~[Path] { - // If we're generating a test executable, then ignore all other output - // styles at all other locations - let outputs = if sess.opts.test { - ~[session::OutputExecutable] - } else { - (*sess.outputs).clone() - }; - let mut out_filenames = ~[]; - for output in outputs.move_iter() { - let out_file = link_binary_output(sess, trans, output, obj_filename, out_filename, lm); + for &output in sess.outputs.iter() { + let out_file = link_binary_output(sess, trans, output, obj_filename, + out_filename, lm); out_filenames.push(out_file); } diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 00f39138f58..78b59f49341 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -405,13 +405,13 @@ pub fn expect(sess: Session, opt: Option, msg: || -> ~str) -> T { } pub fn building_library(options: &options, crate: &ast::Crate) -> bool { + if options.test { return false } for output in options.outputs.iter() { match *output { OutputExecutable => {} OutputStaticlib | OutputDylib | OutputRlib => return true } } - if options.test { return false } match syntax::attr::first_attr_value_str_by_name(crate.attrs, "crate_type") { Some(s) => "lib" == s || "rlib" == s || "dylib" == s || "staticlib" == s, _ => false @@ -419,6 +419,11 @@ pub fn building_library(options: &options, crate: &ast::Crate) -> bool { } pub fn collect_outputs(options: &options, crate: &ast::Crate) -> ~[OutputStyle] { + // If we're generating a test executable, then ignore all other output + // styles at all other locations + if options.test { + return ~[OutputExecutable]; + } let mut base = options.outputs.clone(); let mut iter = crate.attrs.iter().filter_map(|a| { if "crate_type" == a.name() { diff --git a/src/test/run-make/no-intermediate-extras/Makefile b/src/test/run-make/no-intermediate-extras/Makefile new file mode 100644 index 00000000000..89186b2ad4d --- /dev/null +++ b/src/test/run-make/no-intermediate-extras/Makefile @@ -0,0 +1,7 @@ +# Regression test for issue #10973 + +-include ../tools.mk + +all: + $(RUSTC) --rlib --test foo.rs + rm $(TMPDIR)/foo.bc && exit 1 || exit 0 diff --git a/src/test/run-make/no-intermediate-extras/foo.rs b/src/test/run-make/no-intermediate-extras/foo.rs new file mode 100644 index 00000000000..e69de29bb2d