summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_transmute/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_transmute/src/lib.rs')
-rw-r--r--compiler/rustc_transmute/src/lib.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/compiler/rustc_transmute/src/lib.rs b/compiler/rustc_transmute/src/lib.rs
index 05ad4a4a1..6c49e94dc 100644
--- a/compiler/rustc_transmute/src/lib.rs
+++ b/compiler/rustc_transmute/src/lib.rs
@@ -64,6 +64,10 @@ pub enum Reason {
SrcLayoutUnknown,
/// The layout of dst is unknown
DstLayoutUnknown,
+ /// The size of src is overflow
+ SrcSizeOverflow,
+ /// The size of dst is overflow
+ DstSizeOverflow,
}
#[cfg(feature = "rustc")]
@@ -125,19 +129,16 @@ mod rustc {
c: Const<'tcx>,
) -> Option<Self> {
use rustc_middle::ty::ScalarInt;
- use rustc_middle::ty::TypeVisitableExt;
use rustc_span::symbol::sym;
- let c = c.eval(tcx, param_env);
-
- if let Err(err) = c.error_reported() {
+ let Ok(cv) = c.eval(tcx, param_env, None) else {
return Some(Self {
alignment: true,
lifetimes: true,
safety: true,
validity: true,
});
- }
+ };
let adt_def = c.ty().ty_adt_def()?;
@@ -149,8 +150,8 @@ mod rustc {
);
let variant = adt_def.non_enum_variant();
- let fields = match c.try_to_valtree() {
- Some(ValTree::Branch(branch)) => branch,
+ let fields = match cv {
+ ValTree::Branch(branch) => branch,
_ => {
return Some(Self {
alignment: true,