about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-07-18 07:22:33 +0000
committerbors <bors@rust-lang.org>2023-07-18 07:22:33 +0000
commit0f16bd341eaf3ad47134c6d855a764e0099fbc93 (patch)
tree522be533ab8596459c6d5ddad17db5e3b2edbf7a
parent6b9236ed5a58879969ddcf4c35a6a24f6260e979 (diff)
parentc8ee46be75420eeee9527135ebb1047f751d4372 (diff)
downloadrust-0f16bd341eaf3ad47134c6d855a764e0099fbc93.tar.gz
rust-0f16bd341eaf3ad47134c6d855a764e0099fbc93.zip
Auto merge of #113659 - ericmarkmartin:smir-refs-and-ptrs, r=spastorino
Add ty convs for smir refs and ptrs

r? `@spastorino`
-rw-r--r--compiler/rustc_smir/src/rustc_smir/mod.rs8
-rw-r--r--compiler/rustc_smir/src/stable_mir/mir/body.rs4
-rw-r--r--compiler/rustc_smir/src/stable_mir/ty.rs6
3 files changed, 11 insertions, 7 deletions
diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs
index 6af6cfe58f1..0e5de1e74d3 100644
--- a/compiler/rustc_smir/src/rustc_smir/mod.rs
+++ b/compiler/rustc_smir/src/rustc_smir/mod.rs
@@ -119,8 +119,12 @@ impl<'tcx> Tables<'tcx> {
                 TyKind::RigidTy(RigidTy::Array(self.intern_ty(*ty), opaque(constant)))
             }
             ty::Slice(ty) => TyKind::RigidTy(RigidTy::Slice(self.intern_ty(*ty))),
-            ty::RawPtr(_) => todo!(),
-            ty::Ref(_, _, _) => todo!(),
+            ty::RawPtr(ty::TypeAndMut { ty, mutbl }) => {
+                TyKind::RigidTy(RigidTy::RawPtr(self.intern_ty(*ty), mutbl.stable()))
+            }
+            ty::Ref(region, ty, mutbl) => {
+                TyKind::RigidTy(RigidTy::Ref(opaque(region), self.intern_ty(*ty), mutbl.stable()))
+            }
             ty::FnDef(_, _) => todo!(),
             ty::FnPtr(_) => todo!(),
             ty::Dynamic(_, _, _) => todo!(),
diff --git a/compiler/rustc_smir/src/stable_mir/mir/body.rs b/compiler/rustc_smir/src/stable_mir/mir/body.rs
index 02ac907f09a..831eb6589e4 100644
--- a/compiler/rustc_smir/src/stable_mir/mir/body.rs
+++ b/compiler/rustc_smir/src/stable_mir/mir/body.rs
@@ -1,4 +1,4 @@
-use crate::rustc_internal::Opaque;
+use crate::stable_mir::ty::Region;
 use crate::stable_mir::{self, ty::Ty};
 
 #[derive(Clone, Debug)]
@@ -137,8 +137,6 @@ pub enum Statement {
     Nop,
 }
 
-type Region = Opaque;
-
 // FIXME this is incomplete
 #[derive(Clone, Debug)]
 pub enum Rvalue {
diff --git a/compiler/rustc_smir/src/stable_mir/ty.rs b/compiler/rustc_smir/src/stable_mir/ty.rs
index e9f17f92c04..7ae07efb729 100644
--- a/compiler/rustc_smir/src/stable_mir/ty.rs
+++ b/compiler/rustc_smir/src/stable_mir/ty.rs
@@ -1,4 +1,4 @@
-use super::{with, DefId};
+use super::{mir::Mutability, with, DefId};
 use crate::rustc_internal::Opaque;
 
 #[derive(Copy, Clone, Debug)]
@@ -11,7 +11,7 @@ impl Ty {
 }
 
 type Const = Opaque;
-type Region = Opaque;
+pub(crate) type Region = Opaque;
 
 #[derive(Clone, Debug)]
 pub enum TyKind {
@@ -29,6 +29,8 @@ pub enum RigidTy {
     Str,
     Array(Ty, Const),
     Slice(Ty),
+    RawPtr(Ty, Mutability),
+    Ref(Region, Ty, Mutability),
     Tuple(Vec<Ty>),
 }