@@ -36,9 +36,9 @@ impl<'b, W: Write> Drop for JsonDumper<'b, W> {
36
36
}
37
37
38
38
macro_rules! impl_fn {
39
- ( $fn_name: ident, $data_type: ident, $bin : ident) => {
39
+ ( $fn_name: ident, $data_type: ident, $bucket : ident) => {
40
40
fn $fn_name( & mut self , data: $data_type) {
41
- self . result. $bin . push( From :: from( data) ) ;
41
+ self . result. $bucket . push( From :: from( data) ) ;
42
42
}
43
43
}
44
44
}
@@ -105,10 +105,27 @@ impl Analysis {
105
105
}
106
106
}
107
107
108
+ // DefId::index is a newtype and so the JSON serialisation is ugly. Therefore
109
+ // we use our own Id which is the same, but without the newtype.
110
+ #[ derive( Debug , RustcEncodable ) ]
111
+ struct Id {
112
+ krate : u32 ,
113
+ index : u32 ,
114
+ }
115
+
116
+ impl From < DefId > for Id {
117
+ fn from ( id : DefId ) -> Id {
118
+ Id {
119
+ krate : id. krate ,
120
+ index : id. index . as_u32 ( ) ,
121
+ }
122
+ }
123
+ }
124
+
108
125
#[ derive( Debug , RustcEncodable ) ]
109
126
struct Import {
110
127
kind : ImportKind ,
111
- id : DefId ,
128
+ id : Id ,
112
129
span : SpanData ,
113
130
name : String ,
114
131
value : String ,
@@ -125,7 +142,7 @@ impl From<ExternCrateData> for Import {
125
142
fn from ( data : ExternCrateData ) -> Import {
126
143
Import {
127
144
kind : ImportKind :: ExternCrate ,
128
- id : data. id ,
145
+ id : From :: from ( data. id ) ,
129
146
span : data. span ,
130
147
name : data. name ,
131
148
value : String :: new ( ) ,
@@ -136,7 +153,7 @@ impl From<UseData> for Import {
136
153
fn from ( data : UseData ) -> Import {
137
154
Import {
138
155
kind : ImportKind :: Use ,
139
- id : data. id ,
156
+ id : From :: from ( data. id ) ,
140
157
span : data. span ,
141
158
name : data. name ,
142
159
value : String :: new ( ) ,
@@ -147,7 +164,7 @@ impl From<UseGlobData> for Import {
147
164
fn from ( data : UseGlobData ) -> Import {
148
165
Import {
149
166
kind : ImportKind :: GlobUse ,
150
- id : data. id ,
167
+ id : From :: from ( data. id ) ,
151
168
span : data. span ,
152
169
name : "*" . to_owned ( ) ,
153
170
value : data. names . join ( ", " ) ,
@@ -158,7 +175,7 @@ impl From<UseGlobData> for Import {
158
175
#[ derive( Debug , RustcEncodable ) ]
159
176
struct Def {
160
177
kind : DefKind ,
161
- id : DefId ,
178
+ id : Id ,
162
179
span : SpanData ,
163
180
name : String ,
164
181
qualname : String ,
@@ -191,7 +208,7 @@ impl From<EnumData> for Def {
191
208
fn from ( data : EnumData ) -> Def {
192
209
Def {
193
210
kind : DefKind :: Enum ,
194
- id : data. id ,
211
+ id : From :: from ( data. id ) ,
195
212
span : data. span ,
196
213
name : data. name ,
197
214
qualname : data. qualname ,
@@ -204,7 +221,7 @@ impl From<TupleVariantData> for Def {
204
221
fn from ( data : TupleVariantData ) -> Def {
205
222
Def {
206
223
kind : DefKind :: Tuple ,
207
- id : data. id ,
224
+ id : From :: from ( data. id ) ,
208
225
span : data. span ,
209
226
name : data. name ,
210
227
qualname : data. qualname ,
@@ -216,7 +233,7 @@ impl From<StructVariantData> for Def {
216
233
fn from ( data : StructVariantData ) -> Def {
217
234
Def {
218
235
kind : DefKind :: Struct ,
219
- id : data. id ,
236
+ id : From :: from ( data. id ) ,
220
237
span : data. span ,
221
238
name : data. name ,
222
239
qualname : data. qualname ,
@@ -228,7 +245,7 @@ impl From<StructData> for Def {
228
245
fn from ( data : StructData ) -> Def {
229
246
Def {
230
247
kind : DefKind :: Struct ,
231
- id : data. id ,
248
+ id : From :: from ( data. id ) ,
232
249
span : data. span ,
233
250
name : data. name ,
234
251
qualname : data. qualname ,
@@ -240,7 +257,7 @@ impl From<TraitData> for Def {
240
257
fn from ( data : TraitData ) -> Def {
241
258
Def {
242
259
kind : DefKind :: Trait ,
243
- id : data. id ,
260
+ id : From :: from ( data. id ) ,
244
261
span : data. span ,
245
262
name : data. name ,
246
263
qualname : data. qualname ,
@@ -252,7 +269,7 @@ impl From<FunctionData> for Def {
252
269
fn from ( data : FunctionData ) -> Def {
253
270
Def {
254
271
kind : DefKind :: Function ,
255
- id : data. id ,
272
+ id : From :: from ( data. id ) ,
256
273
span : data. span ,
257
274
name : data. name ,
258
275
qualname : data. qualname ,
@@ -264,7 +281,7 @@ impl From<MethodData> for Def {
264
281
fn from ( data : MethodData ) -> Def {
265
282
Def {
266
283
kind : DefKind :: Function ,
267
- id : data. id ,
284
+ id : From :: from ( data. id ) ,
268
285
span : data. span ,
269
286
name : data. name ,
270
287
qualname : data. qualname ,
@@ -276,7 +293,7 @@ impl From<MacroData> for Def {
276
293
fn from ( data : MacroData ) -> Def {
277
294
Def {
278
295
kind : DefKind :: Macro ,
279
- id : null_def_id ( ) ,
296
+ id : From :: from ( null_def_id ( ) ) ,
280
297
span : data. span ,
281
298
name : data. name ,
282
299
qualname : data. qualname ,
@@ -288,7 +305,7 @@ impl From<ModData> for Def {
288
305
fn from ( data : ModData ) -> Def {
289
306
Def {
290
307
kind : DefKind :: Mod ,
291
- id : data. id ,
308
+ id : From :: from ( data. id ) ,
292
309
span : data. span ,
293
310
name : data. name ,
294
311
qualname : data. qualname ,
@@ -300,7 +317,7 @@ impl From<TypeDefData> for Def {
300
317
fn from ( data : TypeDefData ) -> Def {
301
318
Def {
302
319
kind : DefKind :: Type ,
303
- id : data. id ,
320
+ id : From :: from ( data. id ) ,
304
321
span : data. span ,
305
322
name : data. name ,
306
323
qualname : data. qualname ,
@@ -312,7 +329,7 @@ impl From<VariableData> for Def {
312
329
fn from ( data : VariableData ) -> Def {
313
330
Def {
314
331
kind : DefKind :: Variable ,
315
- id : data. id ,
332
+ id : From :: from ( data. id ) ,
316
333
span : data. span ,
317
334
name : data. name ,
318
335
qualname : data. qualname ,
@@ -333,15 +350,15 @@ enum RefKind {
333
350
struct Ref {
334
351
kind : RefKind ,
335
352
span : SpanData ,
336
- ref_id : DefId ,
353
+ ref_id : Id ,
337
354
}
338
355
339
356
impl From < FunctionRefData > for Ref {
340
357
fn from ( data : FunctionRefData ) -> Ref {
341
358
Ref {
342
359
kind : RefKind :: Function ,
343
360
span : data. span ,
344
- ref_id : data. ref_id ,
361
+ ref_id : From :: from ( data. ref_id ) ,
345
362
}
346
363
}
347
364
}
@@ -350,7 +367,7 @@ impl From<FunctionCallData> for Ref {
350
367
Ref {
351
368
kind : RefKind :: Function ,
352
369
span : data. span ,
353
- ref_id : data. ref_id ,
370
+ ref_id : From :: from ( data. ref_id ) ,
354
371
}
355
372
}
356
373
}
@@ -359,7 +376,7 @@ impl From<MethodCallData> for Ref {
359
376
Ref {
360
377
kind : RefKind :: Function ,
361
378
span : data. span ,
362
- ref_id : data. ref_id . or ( data. decl_id ) . unwrap_or ( null_def_id ( ) ) ,
379
+ ref_id : From :: from ( data. ref_id . or ( data. decl_id ) . unwrap_or ( null_def_id ( ) ) ) ,
363
380
}
364
381
}
365
382
}
@@ -368,7 +385,7 @@ impl From<ModRefData> for Ref {
368
385
Ref {
369
386
kind : RefKind :: Mod ,
370
387
span : data. span ,
371
- ref_id : data. ref_id . unwrap_or ( null_def_id ( ) ) ,
388
+ ref_id : From :: from ( data. ref_id . unwrap_or ( null_def_id ( ) ) ) ,
372
389
}
373
390
}
374
391
}
@@ -377,7 +394,7 @@ impl From<TypeRefData> for Ref {
377
394
Ref {
378
395
kind : RefKind :: Type ,
379
396
span : data. span ,
380
- ref_id : data. ref_id . unwrap_or ( null_def_id ( ) ) ,
397
+ ref_id : From :: from ( data. ref_id . unwrap_or ( null_def_id ( ) ) ) ,
381
398
}
382
399
}
383
400
}
@@ -386,7 +403,7 @@ impl From<VariableRefData> for Ref {
386
403
Ref {
387
404
kind : RefKind :: Variable ,
388
405
span : data. span ,
389
- ref_id : data. ref_id ,
406
+ ref_id : From :: from ( data. ref_id ) ,
390
407
}
391
408
}
392
409
}
0 commit comments