Add ~const
bound test for negative impls
This commit is contained in:
parent
1fbd6aedb3
commit
e6aef256e6
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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`.
|
||||||
|
Loading…
Reference in New Issue
Block a user