8
8
//! For now, we are developing everything inside `rustc`, thus, we keep this module private.
9
9
10
10
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
+ } ;
12
14
use crate :: stable_mir:: { self , Context } ;
13
15
use rustc_hir as hir;
14
16
use rustc_middle:: mir;
@@ -97,22 +99,7 @@ impl<'tcx> Tables<'tcx> {
97
99
} ,
98
100
ty:: Adt ( adt_def, generic_args) => TyKind :: RigidTy ( RigidTy :: Adt (
99
101
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) ,
116
103
) ) ,
117
104
ty:: Foreign ( def_id) => {
118
105
TyKind :: RigidTy ( RigidTy :: Foreign ( rustc_internal:: foreign_def ( * def_id) ) )
@@ -130,67 +117,21 @@ impl<'tcx> Tables<'tcx> {
130
117
}
131
118
ty:: FnDef ( def_id, generic_args) => TyKind :: RigidTy ( RigidTy :: FnDef (
132
119
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) ,
149
121
) ) ,
150
122
ty:: FnPtr ( _) => todo ! ( ) ,
151
123
ty:: Dynamic ( _, _, _) => todo ! ( ) ,
152
124
ty:: Closure ( def_id, generic_args) => TyKind :: RigidTy ( RigidTy :: Closure (
153
125
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) ,
170
127
) ) ,
171
128
ty:: Generator ( def_id, generic_args, movability) => TyKind :: RigidTy ( RigidTy :: Generator (
172
129
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) ,
189
131
match movability {
190
132
hir:: Movability :: Static => Movability :: Static ,
191
133
hir:: Movability :: Movable => Movability :: Movable ,
192
-
193
- }
134
+ } ,
194
135
) ) ,
195
136
ty:: Never => TyKind :: RigidTy ( RigidTy :: Never ) ,
196
137
ty:: Tuple ( fields) => TyKind :: RigidTy ( RigidTy :: Tuple (
@@ -217,6 +158,24 @@ impl<'tcx> Tables<'tcx> {
217
158
self . types . push ( ty) ;
218
159
stable_mir:: ty:: Ty ( id)
219
160
}
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
+ }
220
179
}
221
180
222
181
/// Build a stable mir crate from a given crate number.
0 commit comments