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