summaryrefslogtreecommitdiffstats
path: root/src/test/run-make-fulldeps/extern-flag-disambiguates
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /src/test/run-make-fulldeps/extern-flag-disambiguates
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/run-make-fulldeps/extern-flag-disambiguates')
-rw-r--r--src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile25
-rw-r--r--src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs6
-rw-r--r--src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs9
-rw-r--r--src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs9
-rw-r--r--src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs11
5 files changed, 60 insertions, 0 deletions
diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile b/src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile
new file mode 100644
index 000000000..81930e969
--- /dev/null
+++ b/src/test/run-make-fulldeps/extern-flag-disambiguates/Makefile
@@ -0,0 +1,25 @@
+-include ../tools.mk
+
+# Attempt to build this dependency tree:
+#
+# A.1 A.2
+# |\ |
+# | \ |
+# B \ C
+# \ | /
+# \|/
+# D
+#
+# Note that A.1 and A.2 are crates with the same name.
+
+all:
+ $(RUSTC) -C metadata=1 -C extra-filename=-1 a.rs
+ $(RUSTC) -C metadata=2 -C extra-filename=-2 a.rs
+ $(RUSTC) b.rs --extern a=$(TMPDIR)/liba-1.rlib
+ $(RUSTC) c.rs --extern a=$(TMPDIR)/liba-2.rlib
+ @echo before
+ $(RUSTC) --cfg before d.rs --extern a=$(TMPDIR)/liba-1.rlib
+ $(call RUN,d)
+ @echo after
+ $(RUSTC) --cfg after d.rs --extern a=$(TMPDIR)/liba-1.rlib
+ $(call RUN,d)
diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs b/src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs
new file mode 100644
index 000000000..2b1a31901
--- /dev/null
+++ b/src/test/run-make-fulldeps/extern-flag-disambiguates/a.rs
@@ -0,0 +1,6 @@
+#![crate_name = "a"]
+#![crate_type = "rlib"]
+
+static FOO: usize = 3;
+
+pub fn token() -> &'static usize { &FOO }
diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs b/src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs
new file mode 100644
index 000000000..1d7a7339c
--- /dev/null
+++ b/src/test/run-make-fulldeps/extern-flag-disambiguates/b.rs
@@ -0,0 +1,9 @@
+#![crate_name = "b"]
+#![crate_type = "rlib"]
+
+extern crate a;
+
+static FOO: usize = 3;
+
+pub fn token() -> &'static usize { &FOO }
+pub fn a_token() -> &'static usize { a::token() }
diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs b/src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs
new file mode 100644
index 000000000..3f9d143ed
--- /dev/null
+++ b/src/test/run-make-fulldeps/extern-flag-disambiguates/c.rs
@@ -0,0 +1,9 @@
+#![crate_name = "c"]
+#![crate_type = "rlib"]
+
+extern crate a;
+
+static FOO: usize = 3;
+
+pub fn token() -> &'static usize { &FOO }
+pub fn a_token() -> &'static usize { a::token() }
diff --git a/src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs b/src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs
new file mode 100644
index 000000000..249c6a107
--- /dev/null
+++ b/src/test/run-make-fulldeps/extern-flag-disambiguates/d.rs
@@ -0,0 +1,11 @@
+#[cfg(before)] extern crate a;
+extern crate b;
+extern crate c;
+#[cfg(after)] extern crate a;
+
+fn t(a: &'static usize) -> usize { a as *const _ as usize }
+
+fn main() {
+ assert_eq!(t(a::token()), t(b::a_token()));
+ assert!(t(a::token()) != t(c::a_token()));
+}