about summary refs log tree commit diff
diff options
context:
space:
mode:
authorwoppopo <woppopo@protonmail.com>2022-01-17 14:50:40 +0900
committerwoppopo <woppopo@protonmail.com>2022-01-17 14:50:40 +0900
commite6aef256e6155b33394868b4d3ee1984e6b59bc6 (patch)
tree1a4f0cd241ac83a285df343fc29eec9f0b27c069
parent1fbd6aedb3474d2a5d70839a42c80d869749d8ff (diff)
downloadrust-e6aef256e6155b33394868b4d3ee1984e6b59bc6.tar.gz
rust-e6aef256e6155b33394868b4d3ee1984e6b59bc6.zip
Add `~const` bound test for negative impls
-rw-r--r--src/test/ui/consts/const-block-const-bound.rs8
-rw-r--r--src/test/ui/consts/const-block-const-bound.stderr18
2 files changed, 23 insertions, 3 deletions
diff --git a/src/test/ui/consts/const-block-const-bound.rs b/src/test/ui/consts/const-block-const-bound.rs
index 3bfc759a9ae..3d7e171f18c 100644
--- a/src/test/ui/consts/const-block-const-bound.rs
+++ b/src/test/ui/consts/const-block-const-bound.rs
@@ -1,5 +1,5 @@
 #![allow(unused)]
-#![feature(const_fn_trait_bound, const_trait_impl, inline_const)]
+#![feature(const_fn_trait_bound, const_trait_impl, inline_const, negative_impls)]
 
 const fn f<T: ~const Drop>(x: T) {}
 
@@ -9,9 +9,15 @@ impl Drop for UnconstDrop {
     fn drop(&mut self) {}
 }
 
+struct NonDrop;
+
+impl !Drop for NonDrop {}
+
 fn main() {
     const {
         f(UnconstDrop);
         //~^ ERROR the trait bound `UnconstDrop: Drop` is not satisfied
+        f(NonDrop);
+        //~^ ERROR the trait bound `NonDrop: Drop` is not satisfied
     }
 }
diff --git a/src/test/ui/consts/const-block-const-bound.stderr b/src/test/ui/consts/const-block-const-bound.stderr
index 0e6e426e7c2..5f912c66bb9 100644
--- a/src/test/ui/consts/const-block-const-bound.stderr
+++ b/src/test/ui/consts/const-block-const-bound.stderr
@@ -1,5 +1,5 @@
 error[E0277]: the trait bound `UnconstDrop: Drop` is not satisfied
-  --> $DIR/const-block-const-bound.rs:14:11
+  --> $DIR/const-block-const-bound.rs:18:11
    |
 LL |         f(UnconstDrop);
    |         - ^^^^^^^^^^^ the trait `Drop` is not implemented for `UnconstDrop`
@@ -16,6 +16,20 @@ help: consider introducing a `where` bound, but there might be an alternative be
 LL | fn main() where UnconstDrop: Drop {
    |           +++++++++++++++++++++++
 
-error: aborting due to previous error
+error[E0277]: the trait bound `NonDrop: Drop` is not satisfied
+  --> $DIR/const-block-const-bound.rs:20:11
+   |
+LL |         f(NonDrop);
+   |         - ^^^^^^^ the trait `Drop` is not implemented for `NonDrop`
+   |         |
+   |         required by a bound introduced by this call
+   |
+note: required by a bound in `f`
+  --> $DIR/const-block-const-bound.rs:4:15
+   |
+LL | const fn f<T: ~const Drop>(x: T) {}
+   |               ^^^^^^^^^^^ required by this bound in `f`
+
+error: aborting due to 2 previous errors
 
 For more information about this error, try `rustc --explain E0277`.