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"];