88//! For now, we are developing everything inside `rustc`, thus, we keep this module private.
99
1010use 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+ } ;
1214use crate :: stable_mir:: { self , Context } ;
1315use rustc_hir as hir;
1416use 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