From b78c3daad0f0b7490988f4957bab7bc53049b3bb Mon Sep 17 00:00:00 2001 From: Jack Wrenn Date: Thu, 21 Jul 2022 18:18:36 +0000 Subject: [PATCH] safe transmute: reference tracking issue ref: https://github.com/rust-lang/rust/pull/92268#discussion_r925266769 --- library/core/src/mem/mod.rs | 2 +- library/core/src/mem/transmutability.rs | 4 ++-- .../feature-missing.rs | 3 +++ .../feature-missing.stderr | 12 +++++++++++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/library/core/src/mem/mod.rs b/library/core/src/mem/mod.rs index add65a3be50..b1cf5bd92d2 100644 --- a/library/core/src/mem/mod.rs +++ b/library/core/src/mem/mod.rs @@ -28,7 +28,7 @@ mod valid_align; pub(crate) use valid_align::ValidAlign; mod transmutability; -#[unstable(feature = "transmutability", issue = "none")] +#[unstable(feature = "transmutability", issue = "99571")] pub use transmutability::{Assume, BikeshedIntrinsicFrom}; #[stable(feature = "rust1", since = "1.0.0")] diff --git a/library/core/src/mem/transmutability.rs b/library/core/src/mem/transmutability.rs index 820a7582b11..b59a5b89d83 100644 --- a/library/core/src/mem/transmutability.rs +++ b/library/core/src/mem/transmutability.rs @@ -3,7 +3,7 @@ /// This trait is implemented on-the-fly by the compiler for types `Src` and `Self` when the bits of /// any value of type `Self` are safely transmutable into a value of type `Dst`, in a given `Context`, /// notwithstanding whatever safety checks you have asked the compiler to [`Assume`] are satisfied. -#[unstable(feature = "transmutability", issue = "none")] +#[unstable(feature = "transmutability", issue = "99571")] #[cfg_attr(not(bootstrap), lang = "transmute_trait")] #[rustc_on_unimplemented( message = "`{Src}` cannot be safely transmuted into `{Self}` in the defining scope of `{Context}`.", @@ -22,7 +22,7 @@ pub unsafe trait BikeshedIntrinsicFrom< } /// What transmutation safety conditions shall the compiler assume that *you* are checking? -#[unstable(feature = "transmutability", issue = "none")] +#[unstable(feature = "transmutability", issue = "99571")] #[derive(PartialEq, Eq, Clone, Copy, Debug)] pub struct Assume { /// When `true`, the compiler assumes that *you* are ensuring (either dynamically or statically) that diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs b/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs index 12018f3161a..30c381745d0 100644 --- a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs +++ b/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.rs @@ -4,3 +4,6 @@ use std::mem::BikeshedIntrinsicFrom; //~^ ERROR use of unstable library feature 'transmutability' [E0658] + +use std::mem::Assume; +//~^ ERROR use of unstable library feature 'transmutability' [E0658] diff --git a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr b/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr index 4b51850634a..ba8093f8614 100644 --- a/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr +++ b/src/test/ui/transmutability/malformed-program-gracefulness/feature-missing.stderr @@ -4,8 +4,18 @@ error[E0658]: use of unstable library feature 'transmutability' LL | use std::mem::BikeshedIntrinsicFrom; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | + = note: see issue #99571 for more information = help: add `#![feature(transmutability)]` to the crate attributes to enable -error: aborting due to previous error +error[E0658]: use of unstable library feature 'transmutability' + --> $DIR/feature-missing.rs:8:5 + | +LL | use std::mem::Assume; + | ^^^^^^^^^^^^^^^^ + | + = note: see issue #99571 for more information + = help: add `#![feature(transmutability)]` to the crate attributes to enable + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0658`.