@@ -56,12 +56,12 @@ impl JsonRenderer<'_> {
56
56
clean:: ModuleItem ( _)
57
57
if self . imported_items . contains ( & item_id. expect_def_id ( ) ) =>
58
58
{
59
- from_clean_item ( item, self )
59
+ item. into_json ( self )
60
60
}
61
61
_ => return None ,
62
62
}
63
63
}
64
- _ => from_clean_item ( item, self ) ,
64
+ _ => item. into_json ( self ) ,
65
65
} ;
66
66
Some ( Item {
67
67
id,
@@ -254,86 +254,90 @@ impl FromClean<clean::AssocItemConstraintKind> for AssocItemConstraintKind {
254
254
}
255
255
}
256
256
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
+ } )
331
303
}
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
+ } ,
332
340
}
333
- ExternCrateItem { src } => ItemEnum :: ExternCrate {
334
- name : name. as_ref ( ) . unwrap ( ) . to_string ( ) ,
335
- rename : src. map ( |x| x. to_string ( ) ) ,
336
- } ,
337
341
}
338
342
}
339
343
0 commit comments