Skip to content

Commit db35f1d

Browse files
committed
Extract generic_args function
1 parent ed32347 commit db35f1d

File tree

1 file changed

+26
-67
lines changed
  • compiler/rustc_smir/src/rustc_smir

1 file changed

+26
-67
lines changed

compiler/rustc_smir/src/rustc_smir/mod.rs

+26-67
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
//! For now, we are developing everything inside `rustc`, thus, we keep this module private.
99
1010
use crate::rustc_internal::{self, opaque};
11-
use crate::stable_mir::ty::{FloatTy, GenericArgKind, GenericArgs, IntTy, Movability, RigidTy, TyKind, UintTy};
11+
use crate::stable_mir::ty::{
12+
FloatTy, GenericArgKind, GenericArgs, IntTy, Movability, RigidTy, TyKind, UintTy,
13+
};
1214
use crate::stable_mir::{self, Context};
1315
use rustc_hir as hir;
1416
use rustc_middle::mir;
@@ -97,22 +99,7 @@ impl<'tcx> Tables<'tcx> {
9799
},
98100
ty::Adt(adt_def, generic_args) => TyKind::RigidTy(RigidTy::Adt(
99101
rustc_internal::adt_def(adt_def.did()),
100-
GenericArgs(
101-
generic_args
102-
.iter()
103-
.map(|arg| match arg.unpack() {
104-
ty::GenericArgKind::Lifetime(region) => {
105-
GenericArgKind::Lifetime(opaque(&region))
106-
}
107-
ty::GenericArgKind::Type(ty) => {
108-
GenericArgKind::Type(self.intern_ty(ty))
109-
}
110-
ty::GenericArgKind::Const(const_) => {
111-
GenericArgKind::Const(opaque(&const_))
112-
}
113-
})
114-
.collect(),
115-
),
102+
self.generic_args(generic_args),
116103
)),
117104
ty::Foreign(def_id) => {
118105
TyKind::RigidTy(RigidTy::Foreign(rustc_internal::foreign_def(*def_id)))
@@ -130,67 +117,21 @@ impl<'tcx> Tables<'tcx> {
130117
}
131118
ty::FnDef(def_id, generic_args) => TyKind::RigidTy(RigidTy::FnDef(
132119
rustc_internal::fn_def(*def_id),
133-
GenericArgs(
134-
generic_args
135-
.iter()
136-
.map(|arg| match arg.unpack() {
137-
ty::GenericArgKind::Lifetime(region) => {
138-
GenericArgKind::Lifetime(opaque(&region))
139-
}
140-
ty::GenericArgKind::Type(ty) => {
141-
GenericArgKind::Type(self.intern_ty(ty))
142-
}
143-
ty::GenericArgKind::Const(const_) => {
144-
GenericArgKind::Const(opaque(&const_))
145-
}
146-
})
147-
.collect(),
148-
),
120+
self.generic_args(generic_args),
149121
)),
150122
ty::FnPtr(_) => todo!(),
151123
ty::Dynamic(_, _, _) => todo!(),
152124
ty::Closure(def_id, generic_args) => TyKind::RigidTy(RigidTy::Closure(
153125
rustc_internal::closure_def(*def_id),
154-
GenericArgs(
155-
generic_args
156-
.iter()
157-
.map(|arg| match arg.unpack() {
158-
ty::GenericArgKind::Lifetime(region) => {
159-
GenericArgKind::Lifetime(opaque(&region))
160-
}
161-
ty::GenericArgKind::Type(ty) => {
162-
GenericArgKind::Type(self.intern_ty(ty))
163-
}
164-
ty::GenericArgKind::Const(const_) => {
165-
GenericArgKind::Const(opaque(&const_))
166-
}
167-
})
168-
.collect(),
169-
),
126+
self.generic_args(generic_args),
170127
)),
171128
ty::Generator(def_id, generic_args, movability) => TyKind::RigidTy(RigidTy::Generator(
172129
rustc_internal::generator_def(*def_id),
173-
GenericArgs(
174-
generic_args
175-
.iter()
176-
.map(|arg| match arg.unpack() {
177-
ty::GenericArgKind::Lifetime(region) => {
178-
GenericArgKind::Lifetime(opaque(&region))
179-
}
180-
ty::GenericArgKind::Type(ty) => {
181-
GenericArgKind::Type(self.intern_ty(ty))
182-
}
183-
ty::GenericArgKind::Const(const_) => {
184-
GenericArgKind::Const(opaque(&const_))
185-
}
186-
})
187-
.collect(),
188-
),
130+
self.generic_args(generic_args),
189131
match movability {
190132
hir::Movability::Static => Movability::Static,
191133
hir::Movability::Movable => Movability::Movable,
192-
193-
}
134+
},
194135
)),
195136
ty::Never => TyKind::RigidTy(RigidTy::Never),
196137
ty::Tuple(fields) => TyKind::RigidTy(RigidTy::Tuple(
@@ -217,6 +158,24 @@ impl<'tcx> Tables<'tcx> {
217158
self.types.push(ty);
218159
stable_mir::ty::Ty(id)
219160
}
161+
162+
fn generic_args(
163+
&mut self,
164+
generic_args: &ty::GenericArgs<'tcx>,
165+
) -> stable_mir::ty::GenericArgs {
166+
GenericArgs(
167+
generic_args
168+
.iter()
169+
.map(|arg| match arg.unpack() {
170+
ty::GenericArgKind::Lifetime(region) => {
171+
GenericArgKind::Lifetime(opaque(&region))
172+
}
173+
ty::GenericArgKind::Type(ty) => GenericArgKind::Type(self.intern_ty(ty)),
174+
ty::GenericArgKind::Const(const_) => GenericArgKind::Const(opaque(&const_)),
175+
})
176+
.collect(),
177+
)
178+
}
220179
}
221180

222181
/// Build a stable mir crate from a given crate number.

0 commit comments

Comments
 (0)