Add ~const bound test for negative impls

This commit is contained in:
woppopo 2022-01-17 14:50:40 +09:00
parent 1fbd6aedb3
commit e6aef256e6
2 changed files with 23 additions and 3 deletions

View File

@ -1,5 +1,5 @@
#![allow(unused)] #![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) {} const fn f<T: ~const Drop>(x: T) {}
@ -9,9 +9,15 @@ impl Drop for UnconstDrop {
fn drop(&mut self) {} fn drop(&mut self) {}
} }
struct NonDrop;
impl !Drop for NonDrop {}
fn main() { fn main() {
const { const {
f(UnconstDrop); f(UnconstDrop);
//~^ ERROR the trait bound `UnconstDrop: Drop` is not satisfied //~^ ERROR the trait bound `UnconstDrop: Drop` is not satisfied
f(NonDrop);
//~^ ERROR the trait bound `NonDrop: Drop` is not satisfied
} }
} }

View File

@ -1,5 +1,5 @@
error[E0277]: the trait bound `UnconstDrop: Drop` is not satisfied 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); LL | f(UnconstDrop);
| - ^^^^^^^^^^^ the trait `Drop` is not implemented for `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 { 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`. For more information about this error, try `rustc --explain E0277`.