about summary refs log tree commit diff
path: root/src/test/ui/extern
diff options
context:
space:
mode:
authorlcnr <rust@lcnr.de>2022-04-25 08:51:26 +0200
committerlcnr <rust@lcnr.de>2022-04-25 08:51:26 +0200
commit5594db097540d831cb7d98a662c7f3df7011411b (patch)
treed93022d13277eece751774870abefadc3fc83a64 /src/test/ui/extern
parent1f631e8e93681ddc6e62d6ba6065cac7c449534c (diff)
do not consider two extern types to be similar
Diffstat (limited to 'src/test/ui/extern')
-rw-r--r--src/test/ui/extern/extern-type-diag-not-similar.rs22
-rw-r--r--src/test/ui/extern/extern-type-diag-not-similar.stderr16
2 files changed, 38 insertions, 0 deletions
diff --git a/src/test/ui/extern/extern-type-diag-not-similar.rs b/src/test/ui/extern/extern-type-diag-not-similar.rs
new file mode 100644
index 00000000000..39d00a6c1bc
--- /dev/null
+++ b/src/test/ui/extern/extern-type-diag-not-similar.rs
@@ -0,0 +1,22 @@
+// We previously mentioned other extern types in the error message here.
+//
+// Two extern types shouldn't really be considered similar just
+// because they are both extern types.
+
+#![feature(extern_types)]
+extern {
+    type ShouldNotBeMentioned;
+}
+
+extern {
+    type Foo;
+}
+
+unsafe impl Send for ShouldNotBeMentioned {}
+
+fn assert_send<T: Send + ?Sized>() {}
+
+fn main() {
+    assert_send::<Foo>()
+    //~^ ERROR `Foo` cannot be sent between threads safely
+}
diff --git a/src/test/ui/extern/extern-type-diag-not-similar.stderr b/src/test/ui/extern/extern-type-diag-not-similar.stderr
new file mode 100644
index 00000000000..75836f7eca1
--- /dev/null
+++ b/src/test/ui/extern/extern-type-diag-not-similar.stderr
@@ -0,0 +1,16 @@
+error[E0277]: `Foo` cannot be sent between threads safely
+  --> $DIR/extern-type-diag-not-similar.rs:20:19
+   |
+LL |     assert_send::<Foo>()
+   |                   ^^^ `Foo` cannot be sent between threads safely
+   |
+   = help: the trait `Send` is not implemented for `Foo`
+note: required by a bound in `assert_send`
+  --> $DIR/extern-type-diag-not-similar.rs:17:19
+   |
+LL | fn assert_send<T: Send + ?Sized>() {}
+   |                   ^^^^ required by this bound in `assert_send`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.