summaryrefslogtreecommitdiffstats
path: root/tests/ui/extern
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/extern')
-rw-r--r--tests/ui/extern/extern-crate-visibility.stderr8
-rw-r--r--tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.rs10
-rw-r--r--tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.stderr47
-rw-r--r--tests/ui/extern/issue-1251.rs16
4 files changed, 81 insertions, 0 deletions
diff --git a/tests/ui/extern/extern-crate-visibility.stderr b/tests/ui/extern/extern-crate-visibility.stderr
index 9eeb83ae1..b23972709 100644
--- a/tests/ui/extern/extern-crate-visibility.stderr
+++ b/tests/ui/extern/extern-crate-visibility.stderr
@@ -9,6 +9,10 @@ note: the crate import `core` is defined here
|
LL | extern crate core;
| ^^^^^^^^^^^^^^^^^^
+help: consider importing this module instead
+ |
+LL | use std::cell;
+ | ~~~~~~~~~
error[E0603]: crate import `core` is private
--> $DIR/extern-crate-visibility.rs:9:10
@@ -21,6 +25,10 @@ note: the crate import `core` is defined here
|
LL | extern crate core;
| ^^^^^^^^^^^^^^^^^^
+help: consider importing this struct instead
+ |
+LL | std::cell::Cell::new(0);
+ | ~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
diff --git a/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.rs b/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.rs
new file mode 100644
index 000000000..17e08f511
--- /dev/null
+++ b/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.rs
@@ -0,0 +1,10 @@
+extern "C" {
+ type Item = [T] where [T]: Sized;
+ //~^ incorrect `type` inside `extern` block
+ //~| `type`s inside `extern` blocks cannot have `where` clauses
+ //~| cannot find type `T` in this scope
+ //~| cannot find type `T` in this scope
+ //~| extern types are experimental
+}
+
+fn main() {}
diff --git a/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.stderr b/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.stderr
new file mode 100644
index 000000000..bdc675503
--- /dev/null
+++ b/tests/ui/extern/issue-112363-extern-item-where-clauses-debug-ice.stderr
@@ -0,0 +1,47 @@
+error: incorrect `type` inside `extern` block
+ --> $DIR/issue-112363-extern-item-where-clauses-debug-ice.rs:2:10
+ |
+LL | extern "C" {
+ | ---------- `extern` blocks define existing foreign types and types inside of them cannot have a body
+LL | type Item = [T] where [T]: Sized;
+ | ^^^^ --- the invalid body
+ | |
+ | cannot have a body
+ |
+ = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
+
+error: `type`s inside `extern` blocks cannot have `where` clauses
+ --> $DIR/issue-112363-extern-item-where-clauses-debug-ice.rs:2:21
+ |
+LL | extern "C" {
+ | ---------- `extern` block begins here
+LL | type Item = [T] where [T]: Sized;
+ | ^^^^^^^^^^^^^^^^ help: remove the `where` clause
+ |
+ = note: for more information, visit https://doc.rust-lang.org/std/keyword.extern.html
+
+error[E0412]: cannot find type `T` in this scope
+ --> $DIR/issue-112363-extern-item-where-clauses-debug-ice.rs:2:28
+ |
+LL | type Item = [T] where [T]: Sized;
+ | ^ not found in this scope
+
+error[E0412]: cannot find type `T` in this scope
+ --> $DIR/issue-112363-extern-item-where-clauses-debug-ice.rs:2:18
+ |
+LL | type Item = [T] where [T]: Sized;
+ | ^ not found in this scope
+
+error[E0658]: extern types are experimental
+ --> $DIR/issue-112363-extern-item-where-clauses-debug-ice.rs:2:5
+ |
+LL | type Item = [T] where [T]: Sized;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #43467 <https://github.com/rust-lang/rust/issues/43467> for more information
+ = help: add `#![feature(extern_types)]` to the crate attributes to enable
+
+error: aborting due to 5 previous errors
+
+Some errors have detailed explanations: E0412, E0658.
+For more information about an error, try `rustc --explain E0412`.
diff --git a/tests/ui/extern/issue-1251.rs b/tests/ui/extern/issue-1251.rs
new file mode 100644
index 000000000..c2c047c79
--- /dev/null
+++ b/tests/ui/extern/issue-1251.rs
@@ -0,0 +1,16 @@
+// build-pass
+#![allow(unused_attributes)]
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+// ignore-wasm32-bare no libc to test ffi with
+#![feature(rustc_private)]
+
+mod rustrt {
+ extern crate libc;
+
+ extern "C" {
+ pub fn rust_get_test_int() -> libc::intptr_t;
+ }
+}
+
+pub fn main() {}