]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_const_eval/src/transform/check_consts/check.rs
Auto merge of #89551 - jhpratt:stabilize-const_raw_ptr_deref, r=oli-obk
[rust.git] / compiler / rustc_const_eval / src / transform / check_consts / check.rs
index 61fd828a430020d9c096a7a559135de424924a77..2854e6fd396c243ba358eaa169efff7692dccce8 100644 (file)
@@ -722,7 +722,7 @@ fn visit_projection_elem(
         match elem {
             ProjectionElem::Deref => {
                 let base_ty = Place::ty_from(place_local, proj_base, self.body, self.tcx).ty;
-                if let ty::RawPtr(_) = base_ty.kind() {
+                if base_ty.is_unsafe_ptr() {
                     if proj_base.is_empty() {
                         let decl = &self.body.local_decls[place_local];
                         if let Some(box LocalInfo::StaticRef { def_id, .. }) = decl.local_info {
@@ -731,7 +731,13 @@ fn visit_projection_elem(
                             return;
                         }
                     }
-                    self.check_op(ops::RawPtrDeref);
+
+                    // `*const T` is stable, `*mut T` is not
+                    if !base_ty.is_mutable_ptr() {
+                        return;
+                    }
+
+                    self.check_op(ops::RawMutPtrDeref);
                 }
 
                 if context.is_mutating_use() {