make cenum_impl_drop_cast deny-by-default and show up as future breakage diagnostic

This commit is contained in:
Ralf Jung 2022-06-02 08:30:32 -04:00
parent 5e6bb83268
commit 0faef0a96e
3 changed files with 18 additions and 2 deletions

View File

@ -2650,10 +2650,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,
};
}

View File

@ -1,4 +1,4 @@
#![allow(dead_code)]
#![allow(dead_code, cenum_impl_drop_cast)]
// check dtor calling order when casting enums.

View File

@ -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>