about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-01-06 09:23:24 -0800
committerAlex Crichton <alex@alexcrichton.com>2014-01-06 09:23:24 -0800
commitb7e58ce5547805490a60a108b1c5ce8813eb93e9 (patch)
tree171d550268b7fa90131ddd7a4543aa8df3517c2c
parentbae091e5171c90803e9c40fb01a76d1b0b6f4321 (diff)
downloadrust-b7e58ce5547805490a60a108b1c5ce8813eb93e9.tar.gz
rust-b7e58ce5547805490a60a108b1c5ce8813eb93e9.zip
Don't attempt duplicate outputs
This ends up causing weird errors like those seen in #11346

Closes #11346
-rw-r--r--src/librustc/driver/session.rs4
-rw-r--r--src/test/run-make/duplicate-output-flavors/Makefile4
-rw-r--r--src/test/run-make/duplicate-output-flavors/foo.rs1
3 files changed, 8 insertions, 1 deletions
diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs
index 4295d14441e..a8a948db4e1 100644
--- a/src/librustc/driver/session.rs
+++ b/src/librustc/driver/session.rs
@@ -192,7 +192,7 @@ pub enum EntryFnType {
     EntryNone,
 }
 
-#[deriving(Eq, Clone)]
+#[deriving(Eq, Clone, TotalOrd, TotalEq)]
 pub enum OutputStyle {
     OutputExecutable,
     OutputDylib,
@@ -461,6 +461,8 @@ pub fn collect_outputs(session: &Session,
     if base.len() == 0 {
         base.push(OutputExecutable);
     }
+    base.sort();
+    base.dedup();
     return base;
 }
 
diff --git a/src/test/run-make/duplicate-output-flavors/Makefile b/src/test/run-make/duplicate-output-flavors/Makefile
new file mode 100644
index 00000000000..a93a7ce8448
--- /dev/null
+++ b/src/test/run-make/duplicate-output-flavors/Makefile
@@ -0,0 +1,4 @@
+include ../tools.mk
+
+all:
+	$(RUSTC) --rlib foo.rs
diff --git a/src/test/run-make/duplicate-output-flavors/foo.rs b/src/test/run-make/duplicate-output-flavors/foo.rs
new file mode 100644
index 00000000000..3cdacc96ee9
--- /dev/null
+++ b/src/test/run-make/duplicate-output-flavors/foo.rs
@@ -0,0 +1 @@
+#[crate_type = "rlib"];