about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt1
-rw-r--r--tests/run-make/extern-diff-internal-name/rmake.rs2
-rw-r--r--tests/run-make/extern-multiple-copies/rmake.rs2
-rw-r--r--tests/run-make/extern-multiple-copies2/Makefile11
-rw-r--r--tests/run-make/extern-multiple-copies2/rmake.rs22
5 files changed, 22 insertions, 16 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 5df5f844b26..65ec470c170 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -17,7 +17,6 @@ run-make/emit-to-stdout/Makefile
 run-make/export-executable-symbols/Makefile
 run-make/extern-flag-disambiguates/Makefile
 run-make/extern-fn-reachable/Makefile
-run-make/extern-multiple-copies2/Makefile
 run-make/fmt-write-bloat/Makefile
 run-make/foreign-double-unwind/Makefile
 run-make/foreign-exceptions/Makefile
diff --git a/tests/run-make/extern-diff-internal-name/rmake.rs b/tests/run-make/extern-diff-internal-name/rmake.rs
index 13aec894472..1a7f34d65bc 100644
--- a/tests/run-make/extern-diff-internal-name/rmake.rs
+++ b/tests/run-make/extern-diff-internal-name/rmake.rs
@@ -7,8 +7,6 @@
 // make a resurgence.
 // See https://github.com/rust-lang/rust/pull/17189
 
-//FIXME(Oneirical): test-various
-
 use run_make_support::{rust_lib_name, rustc};
 
 fn main() {
diff --git a/tests/run-make/extern-multiple-copies/rmake.rs b/tests/run-make/extern-multiple-copies/rmake.rs
index 94dd26af5e6..8b67e6d9fac 100644
--- a/tests/run-make/extern-multiple-copies/rmake.rs
+++ b/tests/run-make/extern-multiple-copies/rmake.rs
@@ -4,8 +4,6 @@
 // in successful compilation.
 // https://github.com/rust-lang/rust/pull/29961
 
-// FIXME(Oneirical): test-various
-
 use run_make_support::{path, rfs, rust_lib_name, rustc};
 
 fn main() {
diff --git a/tests/run-make/extern-multiple-copies2/Makefile b/tests/run-make/extern-multiple-copies2/Makefile
deleted file mode 100644
index 708b1c1b540..00000000000
--- a/tests/run-make/extern-multiple-copies2/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	$(RUSTC) foo1.rs
-	$(RUSTC) foo2.rs
-	mkdir $(TMPDIR)/foo
-	cp $(TMPDIR)/libfoo1.rlib $(TMPDIR)/foo/libfoo1.rlib
-	$(RUSTC) bar.rs \
-		--extern foo1=$(TMPDIR)/foo/libfoo1.rlib \
-		--extern foo2=$(TMPDIR)/libfoo2.rlib
diff --git a/tests/run-make/extern-multiple-copies2/rmake.rs b/tests/run-make/extern-multiple-copies2/rmake.rs
new file mode 100644
index 00000000000..59913bfa42b
--- /dev/null
+++ b/tests/run-make/extern-multiple-copies2/rmake.rs
@@ -0,0 +1,22 @@
+// Almost identical to `extern-multiple-copies`, but with a variation in the --extern calls
+// and the addition of #[macro_use] in the rust code files, which used to break --extern
+// until #33625.
+// In this test, the rust library foo1 exists in two different locations, but only one
+// is required by the --extern flag. This test checks that the copy is ignored (as --extern
+// demands fetching only the original instance of foo1) and that no error is emitted, resulting
+// in successful compilation.
+// https://github.com/rust-lang/rust/issues/33762
+
+use run_make_support::{path, rfs, rust_lib_name, rustc};
+
+fn main() {
+    rustc().input("foo1.rs").run();
+    rustc().input("foo2.rs").run();
+    rfs::create_dir("foo");
+    rfs::copy(rust_lib_name("foo1"), path("foo").join(rust_lib_name("foo1")));
+    rustc()
+        .input("bar.rs")
+        .extern_("foo1", path("foo").join(rust_lib_name("foo1")))
+        .extern_("foo2", rust_lib_name("foo2"))
+        .run();
+}