diff options
| author | Michael Goulet <michael@errs.io> | 2023-04-26 18:22:32 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-04-27 17:02:17 +0000 |
| commit | bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc (patch) | |
| tree | 3dd93051ad801fdc2d4a61ee2944480f7c401772 /tests/ui | |
| parent | 6ce22733b973355573efd1e6294e585460e90e17 (diff) | |
| download | rust-bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc.tar.gz rust-bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc.zip | |
Explicitly reject negative and reservation drop impls
Diffstat (limited to 'tests/ui')
| -rw-r--r-- | tests/ui/consts/const-block-const-bound.rs | 6 | ||||
| -rw-r--r-- | tests/ui/consts/const-block-const-bound.stderr | 18 | ||||
| -rw-r--r-- | tests/ui/dropck/negative.rs | 7 | ||||
| -rw-r--r-- | tests/ui/dropck/negative.stderr | 8 | ||||
| -rw-r--r-- | tests/ui/dropck/reservation.rs | 10 | ||||
| -rw-r--r-- | tests/ui/dropck/reservation.stderr | 8 |
6 files changed, 35 insertions, 22 deletions
diff --git a/tests/ui/consts/const-block-const-bound.rs b/tests/ui/consts/const-block-const-bound.rs index 42aa0216b87..3704a1a5a39 100644 --- a/tests/ui/consts/const-block-const-bound.rs +++ b/tests/ui/consts/const-block-const-bound.rs @@ -11,15 +11,9 @@ impl Drop for UnconstDrop { fn drop(&mut self) {} } -struct NonDrop; - -impl !Drop for NonDrop {} - fn main() { const { f(UnconstDrop); //~^ ERROR can't drop - f(NonDrop); - //~^ ERROR can't drop } } diff --git a/tests/ui/consts/const-block-const-bound.stderr b/tests/ui/consts/const-block-const-bound.stderr index fef4914fad5..caf24e7afcf 100644 --- a/tests/ui/consts/const-block-const-bound.stderr +++ b/tests/ui/consts/const-block-const-bound.stderr @@ -1,5 +1,5 @@ error[E0277]: can't drop `UnconstDrop` in const contexts - --> $DIR/const-block-const-bound.rs:20:9 + --> $DIR/const-block-const-bound.rs:16:9 | LL | f(UnconstDrop); | ^^^^^^^^^^^^^^ the trait `~const Destruct` is not implemented for `UnconstDrop` @@ -12,20 +12,6 @@ LL | &f(UnconstDrop); LL | &mut f(UnconstDrop); | ++++ -error[E0277]: can't drop `NonDrop` in const contexts - --> $DIR/const-block-const-bound.rs:22:9 - | -LL | f(NonDrop); - | ^^^^^^^^^^ the trait `~const Destruct` is not implemented for `NonDrop` - | - = note: the trait bound `NonDrop: ~const Destruct` is not satisfied -help: consider borrowing here - | -LL | &f(NonDrop); - | + -LL | &mut f(NonDrop); - | ++++ - -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/dropck/negative.rs b/tests/ui/dropck/negative.rs new file mode 100644 index 00000000000..ae63632b55e --- /dev/null +++ b/tests/ui/dropck/negative.rs @@ -0,0 +1,7 @@ +#![feature(negative_impls)] + +struct NonDrop; +impl !Drop for NonDrop {} +//~^ ERROR negative `Drop` impls are not supported + +fn main() {} diff --git a/tests/ui/dropck/negative.stderr b/tests/ui/dropck/negative.stderr new file mode 100644 index 00000000000..d613e30b5ea --- /dev/null +++ b/tests/ui/dropck/negative.stderr @@ -0,0 +1,8 @@ +error: negative `Drop` impls are not supported + --> $DIR/negative.rs:4:1 + | +LL | impl !Drop for NonDrop {} + | ^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/dropck/reservation.rs b/tests/ui/dropck/reservation.rs new file mode 100644 index 00000000000..f7199d4ec44 --- /dev/null +++ b/tests/ui/dropck/reservation.rs @@ -0,0 +1,10 @@ +#![feature(rustc_attrs)] + +struct ReservedDrop; +#[rustc_reservation_impl = "message"] +impl Drop for ReservedDrop { +//~^ ERROR reservation `Drop` impls are not supported + fn drop(&mut self) {} +} + +fn main() {} diff --git a/tests/ui/dropck/reservation.stderr b/tests/ui/dropck/reservation.stderr new file mode 100644 index 00000000000..19325d6ed44 --- /dev/null +++ b/tests/ui/dropck/reservation.stderr @@ -0,0 +1,8 @@ +error: reservation `Drop` impls are not supported + --> $DIR/reservation.rs:5:1 + | +LL | impl Drop for ReservedDrop { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + |
