about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2015-02-09 19:30:22 +0200
committerSimonas Kazlauskas <git@kazlauskas.me>2015-02-09 19:51:21 +0200
commita6e8496601767e59acce010531f8e4dfb40c7c0a (patch)
treea6190471ac69c27a7df481934ef3536a4b0a66a7
parent0ba9e1fa52627404a1e5b90f745f96a872a0c564 (diff)
downloadrust-a6e8496601767e59acce010531f8e4dfb40c7c0a.tar.gz
rust-a6e8496601767e59acce010531f8e4dfb40c7c0a.zip
Deduplicate --crate-type arguments
Crate types from multiple sources appear to be deduplicated properly, but not
deduplicated if they come from the command line arguments. At worst, this used
to cause compiler failures when `--crate-type=lib,rlib` (the same as
`--crate-type=rlib,rlib`, at least at the time of this commit) is provided and
generate the output multiple times otherwise.
-rw-r--r--src/librustc/session/config.rs4
-rw-r--r--src/test/run-make/duplicate-output-flavors/Makefile1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index efd2392e453..6d09b8b09e7 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -1061,7 +1061,9 @@ pub fn parse_crate_types_from_list(list_list: Vec<String>) -> Result<Vec<CrateTy
                                        part));
                 }
             };
-            crate_types.push(new_part)
+            if !crate_types.contains(&new_part) {
+                crate_types.push(new_part)
+            }
         }
     }
 
diff --git a/src/test/run-make/duplicate-output-flavors/Makefile b/src/test/run-make/duplicate-output-flavors/Makefile
index d40b6862a01..e33279966c9 100644
--- a/src/test/run-make/duplicate-output-flavors/Makefile
+++ b/src/test/run-make/duplicate-output-flavors/Makefile
@@ -2,3 +2,4 @@ include ../tools.mk
 
 all:
 	$(RUSTC) --crate-type=rlib foo.rs
+	$(RUSTC) --crate-type=rlib,rlib foo.rs