Skip to content

Commit

Permalink
Auto merge of #97652 - RalfJung:cenum_impl_drop_cast, r=nagisa
Browse files Browse the repository at this point in the history
make cenum_impl_drop_cast deny-by-default

Also make it show up as future breakage diagnostic.

In #96862 we are proposing to change behavior of those drops *again*, so this looks like a good opportunity to increase our pressure on getting them out of the ecosystem. Looking at the [tracking issue](#73333), so far nobody spoke up in favor of this (accidental) feature.

Cc #73333 `@oli-obk`
  • Loading branch information
bors committed Jun 18, 2022
2 parents c3b7d7b + f6b41e3 commit aaf1005
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
6 changes: 3 additions & 3 deletions compiler/rustc_lint_defs/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1154,7 +1154,6 @@ declare_lint! {
/// ### Example
///
/// ```compile_fail
/// #![deny(unaligned_references)]
/// #[repr(packed)]
/// pub struct Foo {
/// field1: u64,
Expand Down Expand Up @@ -2614,7 +2613,7 @@ declare_lint! {
///
/// ### Example
///
/// ```rust
/// ```compile_fail
/// # #![allow(unused)]
/// enum E {
/// A,
Expand Down Expand Up @@ -2650,10 +2649,11 @@ declare_lint! {
/// [issue #73333]: https://github.com/rust-lang/rust/issues/73333
/// [`Copy`]: https://doc.rust-lang.org/std/marker/trait.Copy.html
pub CENUM_IMPL_DROP_CAST,
Warn,
Deny,
"a C-like enum implementing Drop is cast",
@future_incompatible = FutureIncompatibleInfo {
reference: "issue #73333 <https://github.com/rust-lang/rust/issues/73333>",
reason: FutureIncompatibilityReason::FutureReleaseErrorReportNow,
};
}

Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass-valgrind/cast-enum-with-dtor.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#![allow(dead_code)]
#![allow(dead_code, cenum_impl_drop_cast)]

// check dtor calling order when casting enums.

Expand Down
15 changes: 15 additions & 0 deletions src/test/ui/cenum_impl_drop_cast.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,18 @@ LL | #![deny(cenum_impl_drop_cast)]

error: aborting due to previous error

Future incompatibility report: Future breakage diagnostic:
error: cannot cast enum `E` into integer `u32` because it implements `Drop`
--> $DIR/cenum_impl_drop_cast.rs:15:13
|
LL | let i = e as u32;
| ^^^^^^^^
|
note: the lint level is defined here
--> $DIR/cenum_impl_drop_cast.rs:1:9
|
LL | #![deny(cenum_impl_drop_cast)]
| ^^^^^^^^^^^^^^^^^^^^
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #73333 <https://github.com/rust-lang/rust/issues/73333>

0 comments on commit aaf1005

Please sign in to comment.