about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Macleod <alex@macleod.io>2020-11-16 15:37:56 +0000
committerAlex Macleod <alex@macleod.io>2020-11-16 23:13:45 +0000
commit2a5a379b46440b4d1998a7a08dca19bfcae51968 (patch)
tree71ee45bb40887ef387884e63dbabdf6e18c1550c
parentf5230fbf76bafd86ee4376a0e26e551df8d17fec (diff)
downloadrust-2a5a379b46440b4d1998a7a08dca19bfcae51968.tar.gz
rust-2a5a379b46440b4d1998a7a08dca19bfcae51968.zip
Add two regression tests
For #78721 and #78722
-rw-r--r--src/test/ui/impl-trait/issues/issue-78721.rs15
-rw-r--r--src/test/ui/impl-trait/issues/issue-78721.stderr27
-rw-r--r--src/test/ui/impl-trait/issues/issue-78722.rs21
-rw-r--r--src/test/ui/impl-trait/issues/issue-78722.stderr27
4 files changed, 90 insertions, 0 deletions
diff --git a/src/test/ui/impl-trait/issues/issue-78721.rs b/src/test/ui/impl-trait/issues/issue-78721.rs
new file mode 100644
index 00000000000..f7dbef9e3ff
--- /dev/null
+++ b/src/test/ui/impl-trait/issues/issue-78721.rs
@@ -0,0 +1,15 @@
+// edition:2018
+
+#![feature(impl_trait_in_bindings)]
+//~^ WARN the feature `impl_trait_in_bindings` is incomplete
+
+struct Bug {
+    V1: [(); {
+        let f: impl core::future::Future<Output = u8> = async { 1 };
+        //~^ ERROR `async` blocks are not allowed in constants
+        //~| ERROR destructors cannot be evaluated at compile-time
+        1
+    }],
+}
+
+fn main() {}
diff --git a/src/test/ui/impl-trait/issues/issue-78721.stderr b/src/test/ui/impl-trait/issues/issue-78721.stderr
new file mode 100644
index 00000000000..353e882b1af
--- /dev/null
+++ b/src/test/ui/impl-trait/issues/issue-78721.stderr
@@ -0,0 +1,27 @@
+warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/issue-78721.rs:3:12
+   |
+LL | #![feature(impl_trait_in_bindings)]
+   |            ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(incomplete_features)]` on by default
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+
+error: `async` blocks are not allowed in constants
+  --> $DIR/issue-78721.rs:8:57
+   |
+LL |         let f: impl core::future::Future<Output = u8> = async { 1 };
+   |                                                         ^^^^^^^^^^^
+
+error[E0493]: destructors cannot be evaluated at compile-time
+  --> $DIR/issue-78721.rs:8:13
+   |
+LL |         let f: impl core::future::Future<Output = u8> = async { 1 };
+   |             ^ constants cannot evaluate destructors
+...
+LL |     }],
+   |     - value is dropped here
+
+error: aborting due to 2 previous errors; 1 warning emitted
+
+For more information about this error, try `rustc --explain E0493`.
diff --git a/src/test/ui/impl-trait/issues/issue-78722.rs b/src/test/ui/impl-trait/issues/issue-78722.rs
new file mode 100644
index 00000000000..58734d3a445
--- /dev/null
+++ b/src/test/ui/impl-trait/issues/issue-78722.rs
@@ -0,0 +1,21 @@
+// edition:2018
+
+#![feature(type_alias_impl_trait)]
+#![feature(impl_trait_in_bindings)]
+//~^ WARN the feature `impl_trait_in_bindings` is incomplete
+
+type F = impl core::future::Future<Output = u8>;
+
+struct Bug {
+    V1: [(); {
+        fn concrete_use() -> F {
+            async {}
+        }
+        let f: F = async { 1 };
+        //~^ ERROR `async` blocks are not allowed in constants
+        //~| ERROR destructors cannot be evaluated at compile-time
+        1
+    }],
+}
+
+fn main() {}
diff --git a/src/test/ui/impl-trait/issues/issue-78722.stderr b/src/test/ui/impl-trait/issues/issue-78722.stderr
new file mode 100644
index 00000000000..0e1e92b9120
--- /dev/null
+++ b/src/test/ui/impl-trait/issues/issue-78722.stderr
@@ -0,0 +1,27 @@
+warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
+  --> $DIR/issue-78722.rs:4:12
+   |
+LL | #![feature(impl_trait_in_bindings)]
+   |            ^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(incomplete_features)]` on by default
+   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
+
+error: `async` blocks are not allowed in constants
+  --> $DIR/issue-78722.rs:14:20
+   |
+LL |         let f: F = async { 1 };
+   |                    ^^^^^^^^^^^
+
+error[E0493]: destructors cannot be evaluated at compile-time
+  --> $DIR/issue-78722.rs:14:13
+   |
+LL |         let f: F = async { 1 };
+   |             ^ constants cannot evaluate destructors
+...
+LL |     }],
+   |     - value is dropped here
+
+error: aborting due to 2 previous errors; 1 warning emitted
+
+For more information about this error, try `rustc --explain E0493`.