diff --git a/compiler/rustc_smir/src/rustc_smir/mod.rs b/compiler/rustc_smir/src/rustc_smir/mod.rs index f22c620021eeb..e2376f4865351 100644 --- a/compiler/rustc_smir/src/rustc_smir/mod.rs +++ b/compiler/rustc_smir/src/rustc_smir/mod.rs @@ -96,9 +96,11 @@ impl<'tcx> Tables<'tcx> { }, ty::Adt(_, _) => todo!(), ty::Foreign(_) => todo!(), - ty::Str => todo!(), - ty::Array(_, _) => todo!(), - ty::Slice(_) => todo!(), + ty::Str => TyKind::RigidTy(RigidTy::Str), + ty::Array(ty, constant) => { + 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::FnDef(_, _) => todo!(), diff --git a/compiler/rustc_smir/src/stable_mir/ty.rs b/compiler/rustc_smir/src/stable_mir/ty.rs index 3181af46e9cb3..f43d8a2cb9a1d 100644 --- a/compiler/rustc_smir/src/stable_mir/ty.rs +++ b/compiler/rustc_smir/src/stable_mir/ty.rs @@ -1,4 +1,7 @@ use super::with; +use crate::rustc_internal::Opaque; + +type Const = Opaque; #[derive(Copy, Clone, Debug)] pub struct Ty(pub usize); @@ -21,6 +24,9 @@ pub enum RigidTy { Int(IntTy), Uint(UintTy), Float(FloatTy), + Str, + Array(Ty, Const), + Slice(Ty), Tuple(Vec), }