about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2019-05-24 15:13:16 +0200
committerFelix S. Klock II <pnkfelix@pnkfx.org>2019-05-27 10:26:02 +0200
commit4e60f53280c34d35c29b007b28e32b9a6f695d1b (patch)
tree716a6004a7910e13028f8220765430ecd6cd4dc5
parent444f2bae5920a93677a9de6063897e5ce00491e7 (diff)
downloadrust-4e60f53280c34d35c29b007b28e32b9a6f695d1b.tar.gz
rust-4e60f53280c34d35c29b007b28e32b9a6f695d1b.zip
Regression test for issue #59548.
-rw-r--r--src/test/ui/linkage-attr/auxiliary/def_illtyped_external.rs5
-rw-r--r--src/test/ui/linkage-attr/linkage-requires-raw-ptr.rs10
-rw-r--r--src/test/ui/linkage-attr/linkage-requires-raw-ptr.stderr8
3 files changed, 23 insertions, 0 deletions
diff --git a/src/test/ui/linkage-attr/auxiliary/def_illtyped_external.rs b/src/test/ui/linkage-attr/auxiliary/def_illtyped_external.rs
new file mode 100644
index 00000000000..2300930e513
--- /dev/null
+++ b/src/test/ui/linkage-attr/auxiliary/def_illtyped_external.rs
@@ -0,0 +1,5 @@
+#![feature(linkage)]
+#![crate_type = "lib"]
+
+#[linkage="external"]
+pub static EXTERN: u32 = 0;
diff --git a/src/test/ui/linkage-attr/linkage-requires-raw-ptr.rs b/src/test/ui/linkage-attr/linkage-requires-raw-ptr.rs
new file mode 100644
index 00000000000..014c715be0d
--- /dev/null
+++ b/src/test/ui/linkage-attr/linkage-requires-raw-ptr.rs
@@ -0,0 +1,10 @@
+// rust-lang/rust#59548: We used to ICE when trying to use a static
+// with a type that violated its own `#[linkage]`.
+
+// aux-build:def_illtyped_external.rs
+
+extern crate def_illtyped_external as dep;
+
+fn main() {
+    println!("{:p}", &dep::EXTERN);
+}
diff --git a/src/test/ui/linkage-attr/linkage-requires-raw-ptr.stderr b/src/test/ui/linkage-attr/linkage-requires-raw-ptr.stderr
new file mode 100644
index 00000000000..a80b495f97f
--- /dev/null
+++ b/src/test/ui/linkage-attr/linkage-requires-raw-ptr.stderr
@@ -0,0 +1,8 @@
+error: must have type `*const T` or `*mut T` due to `#[linkage]` attribute
+  --> $DIR/auxiliary/def_illtyped_external.rs:5:1
+   |
+LL | pub static EXTERN: u32 = 0;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+