@@ -55,12 +55,12 @@ impl JsonRenderer<'_> {
5555 clean:: ModuleItem ( _)
5656 if self . imported_items . contains ( & item_id. expect_def_id ( ) ) =>
5757 {
58- from_clean_item ( item, self )
58+ item. into_json ( self )
5959 }
6060 _ => return None ,
6161 }
6262 }
63- _ => from_clean_item ( item, self ) ,
63+ _ => item. into_json ( self ) ,
6464 } ;
6565 Some ( Item {
6666 id,
@@ -256,90 +256,96 @@ impl FromClean<clean::AssocItemConstraintKind> for AssocItemConstraintKind {
256256 }
257257}
258258
259- fn from_clean_item ( item : & clean:: Item , renderer : & JsonRenderer < ' _ > ) -> ItemEnum {
260- use clean:: ItemKind :: * ;
261- let header = item. fn_header ( renderer. tcx ) ;
262-
263- match & item. inner . kind {
264- ModuleItem ( m) => ItemEnum :: Module ( Module {
265- is_crate : item. is_crate ( ) ,
266- items : renderer. ids ( & m. items ) ,
267- is_stripped : false ,
268- } ) ,
269- ImportItem ( i) => ItemEnum :: Use ( i. into_json ( renderer) ) ,
270- StructItem ( s) => ItemEnum :: Struct ( s. into_json ( renderer) ) ,
271- UnionItem ( u) => ItemEnum :: Union ( u. into_json ( renderer) ) ,
272- StructFieldItem ( f) => ItemEnum :: StructField ( f. into_json ( renderer) ) ,
273- EnumItem ( e) => ItemEnum :: Enum ( e. into_json ( renderer) ) ,
274- VariantItem ( v) => ItemEnum :: Variant ( v. into_json ( renderer) ) ,
275- FunctionItem ( f) => {
276- ItemEnum :: Function ( from_clean_function ( f, true , header. unwrap ( ) , renderer) )
277- }
278- ForeignFunctionItem ( f, _) => {
279- ItemEnum :: Function ( from_clean_function ( f, false , header. unwrap ( ) , renderer) )
280- }
281- TraitItem ( t) => ItemEnum :: Trait ( t. into_json ( renderer) ) ,
282- TraitAliasItem ( t) => ItemEnum :: TraitAlias ( t. into_json ( renderer) ) ,
283- MethodItem ( m, _) => {
284- ItemEnum :: Function ( from_clean_function ( m, true , header. unwrap ( ) , renderer) )
285- }
286- RequiredMethodItem ( m) => {
287- ItemEnum :: Function ( from_clean_function ( m, false , header. unwrap ( ) , renderer) )
288- }
289- ImplItem ( i) => ItemEnum :: Impl ( i. into_json ( renderer) ) ,
290- StaticItem ( s) => ItemEnum :: Static ( from_clean_static ( s, rustc_hir:: Safety :: Safe , renderer) ) ,
291- ForeignStaticItem ( s, safety) => ItemEnum :: Static ( from_clean_static ( s, * safety, renderer) ) ,
292- ForeignTypeItem => ItemEnum :: ExternType ,
293- TypeAliasItem ( t) => ItemEnum :: TypeAlias ( t. into_json ( renderer) ) ,
294- // FIXME(generic_const_items): Add support for generic free consts
295- ConstantItem ( ci) => ItemEnum :: Constant {
296- type_ : ci. type_ . into_json ( renderer) ,
297- const_ : ci. kind . into_json ( renderer) ,
298- } ,
299- MacroItem ( m) => ItemEnum :: Macro ( m. source . clone ( ) ) ,
300- ProcMacroItem ( m) => ItemEnum :: ProcMacro ( m. into_json ( renderer) ) ,
301- PrimitiveItem ( p) => {
302- ItemEnum :: Primitive ( Primitive {
303- name : p. as_sym ( ) . to_string ( ) ,
304- impls : Vec :: new ( ) , // Added in JsonRenderer::item
305- } )
306- }
307- // FIXME(generic_const_items): Add support for generic associated consts.
308- RequiredAssocConstItem ( _generics, ty) => {
309- ItemEnum :: AssocConst { type_ : ty. into_json ( renderer) , value : None }
310- }
311- // FIXME(generic_const_items): Add support for generic associated consts.
312- ProvidedAssocConstItem ( ci) | ImplAssocConstItem ( ci) => ItemEnum :: AssocConst {
313- type_ : ci. type_ . into_json ( renderer) ,
314- value : Some ( ci. kind . expr ( renderer. tcx ) ) ,
315- } ,
316- RequiredAssocTypeItem ( g, b) => ItemEnum :: AssocType {
317- generics : g. into_json ( renderer) ,
318- bounds : b. into_json ( renderer) ,
319- type_ : None ,
320- } ,
321- AssocTypeItem ( t, b) => ItemEnum :: AssocType {
322- generics : t. generics . into_json ( renderer) ,
323- bounds : b. into_json ( renderer) ,
324- type_ : Some ( t. item_type . as_ref ( ) . unwrap_or ( & t. type_ ) . into_json ( renderer) ) ,
325- } ,
326- // `convert_item` early returns `None` for stripped items and keywords.
327- KeywordItem => unreachable ! ( ) ,
328- StrippedItem ( inner) => {
329- match inner. as_ref ( ) {
330- ModuleItem ( m) => ItemEnum :: Module ( Module {
331- is_crate : item. is_crate ( ) ,
332- items : renderer. ids ( & m. items ) ,
333- is_stripped : true ,
334- } ) ,
335- // `convert_item` early returns `None` for stripped items we're not including
336- _ => unreachable ! ( ) ,
259+ impl FromClean < clean:: Item > for ItemEnum {
260+ fn from_clean ( item : & clean:: Item , renderer : & JsonRenderer < ' _ > ) -> Self {
261+ use clean:: ItemKind :: * ;
262+ let header = item. fn_header ( renderer. tcx ) ;
263+
264+ match & item. inner . kind {
265+ ModuleItem ( m) => ItemEnum :: Module ( Module {
266+ is_crate : item. is_crate ( ) ,
267+ items : renderer. ids ( & m. items ) ,
268+ is_stripped : false ,
269+ } ) ,
270+ ImportItem ( i) => ItemEnum :: Use ( i. into_json ( renderer) ) ,
271+ StructItem ( s) => ItemEnum :: Struct ( s. into_json ( renderer) ) ,
272+ UnionItem ( u) => ItemEnum :: Union ( u. into_json ( renderer) ) ,
273+ StructFieldItem ( f) => ItemEnum :: StructField ( f. into_json ( renderer) ) ,
274+ EnumItem ( e) => ItemEnum :: Enum ( e. into_json ( renderer) ) ,
275+ VariantItem ( v) => ItemEnum :: Variant ( v. into_json ( renderer) ) ,
276+ FunctionItem ( f) => {
277+ ItemEnum :: Function ( from_clean_function ( f, true , header. unwrap ( ) , renderer) )
278+ }
279+ ForeignFunctionItem ( f, _) => {
280+ ItemEnum :: Function ( from_clean_function ( f, false , header. unwrap ( ) , renderer) )
337281 }
282+ TraitItem ( t) => ItemEnum :: Trait ( t. into_json ( renderer) ) ,
283+ TraitAliasItem ( t) => ItemEnum :: TraitAlias ( t. into_json ( renderer) ) ,
284+ MethodItem ( m, _) => {
285+ ItemEnum :: Function ( from_clean_function ( m, true , header. unwrap ( ) , renderer) )
286+ }
287+ RequiredMethodItem ( m) => {
288+ ItemEnum :: Function ( from_clean_function ( m, false , header. unwrap ( ) , renderer) )
289+ }
290+ ImplItem ( i) => ItemEnum :: Impl ( i. into_json ( renderer) ) ,
291+ StaticItem ( s) => {
292+ ItemEnum :: Static ( from_clean_static ( s, rustc_hir:: Safety :: Safe , renderer) )
293+ }
294+ ForeignStaticItem ( s, safety) => {
295+ ItemEnum :: Static ( from_clean_static ( s, * safety, renderer) )
296+ }
297+ ForeignTypeItem => ItemEnum :: ExternType ,
298+ TypeAliasItem ( t) => ItemEnum :: TypeAlias ( t. into_json ( renderer) ) ,
299+ // FIXME(generic_const_items): Add support for generic free consts
300+ ConstantItem ( ci) => ItemEnum :: Constant {
301+ type_ : ci. type_ . into_json ( renderer) ,
302+ const_ : ci. kind . into_json ( renderer) ,
303+ } ,
304+ MacroItem ( m) => ItemEnum :: Macro ( m. source . clone ( ) ) ,
305+ ProcMacroItem ( m) => ItemEnum :: ProcMacro ( m. into_json ( renderer) ) ,
306+ PrimitiveItem ( p) => {
307+ ItemEnum :: Primitive ( Primitive {
308+ name : p. as_sym ( ) . to_string ( ) ,
309+ impls : Vec :: new ( ) , // Added in JsonRenderer::item
310+ } )
311+ }
312+ // FIXME(generic_const_items): Add support for generic associated consts.
313+ RequiredAssocConstItem ( _generics, ty) => {
314+ ItemEnum :: AssocConst { type_ : ty. into_json ( renderer) , value : None }
315+ }
316+ // FIXME(generic_const_items): Add support for generic associated consts.
317+ ProvidedAssocConstItem ( ci) | ImplAssocConstItem ( ci) => ItemEnum :: AssocConst {
318+ type_ : ci. type_ . into_json ( renderer) ,
319+ value : Some ( ci. kind . expr ( renderer. tcx ) ) ,
320+ } ,
321+ RequiredAssocTypeItem ( g, b) => ItemEnum :: AssocType {
322+ generics : g. into_json ( renderer) ,
323+ bounds : b. into_json ( renderer) ,
324+ type_ : None ,
325+ } ,
326+ AssocTypeItem ( t, b) => ItemEnum :: AssocType {
327+ generics : t. generics . into_json ( renderer) ,
328+ bounds : b. into_json ( renderer) ,
329+ type_ : Some ( t. item_type . as_ref ( ) . unwrap_or ( & t. type_ ) . into_json ( renderer) ) ,
330+ } ,
331+ // `convert_item` early returns `None` for stripped items and keywords.
332+ KeywordItem => unreachable ! ( ) ,
333+ StrippedItem ( inner) => {
334+ match inner. as_ref ( ) {
335+ ModuleItem ( m) => ItemEnum :: Module ( Module {
336+ is_crate : item. is_crate ( ) ,
337+ items : renderer. ids ( & m. items ) ,
338+ is_stripped : true ,
339+ } ) ,
340+ // `convert_item` early returns `None` for stripped items we're not including
341+ _ => unreachable ! ( ) ,
342+ }
343+ }
344+ ExternCrateItem { src } => ItemEnum :: ExternCrate {
345+ name : item. name . as_ref ( ) . unwrap ( ) . to_string ( ) ,
346+ rename : src. map ( |x| x. to_string ( ) ) ,
347+ } ,
338348 }
339- ExternCrateItem { src } => ItemEnum :: ExternCrate {
340- name : item. name . as_ref ( ) . unwrap ( ) . to_string ( ) ,
341- rename : src. map ( |x| x. to_string ( ) ) ,
342- } ,
343349 }
344350}
345351
0 commit comments