Skip to content

Commit

Permalink
Rollup merge of rust-lang#92997 - woppopo:test92114, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Add `~const` bound test for negative impls

Resolves rust-lang#92114 which has been fixed in rust-lang#92892.
  • Loading branch information
matthiaskrgr authored Jan 18, 2022
2 parents 71e5bfe + e6aef25 commit baeff67
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
8 changes: 7 additions & 1 deletion src/test/ui/consts/const-block-const-bound.rs
Original file line number Diff line number Diff line change
@@ -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) {}

Expand All @@ -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
}
}
18 changes: 16 additions & 2 deletions src/test/ui/consts/const-block-const-bound.stderr
Original file line number Diff line number Diff line change
@@ -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`
Expand All @@ -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`.

0 comments on commit baeff67

Please sign in to comment.