10
10
11
11
use std:: io:: Write ;
12
12
13
- use rustc:: hir:: def_id:: { DefId , DefIndex } ;
14
- use syntax:: codemap:: Span ;
15
-
16
- use super :: data:: * ;
13
+ use super :: external_data:: * ;
17
14
use super :: dump:: Dump ;
18
- use super :: span_utils:: SpanUtils ;
19
15
20
- pub struct CsvDumper < ' tcx , ' b , W : ' b > {
21
- output : & ' b mut W ,
22
- span : SpanUtils < ' tcx >
16
+ pub struct CsvDumper < ' b , W : ' b > {
17
+ output : & ' b mut W
23
18
}
24
19
25
- impl < ' a , ' b , W : Write > CsvDumper < ' a , ' b , W > {
26
- pub fn new ( writer : & ' b mut W , span : SpanUtils < ' a > ) -> CsvDumper < ' a , ' b , W > {
27
- CsvDumper { output : writer, span : span }
20
+ impl < ' b , W : Write > CsvDumper < ' b , W > {
21
+ pub fn new ( writer : & ' b mut W ) -> CsvDumper < ' b , W > {
22
+ CsvDumper { output : writer }
28
23
}
29
24
30
- fn record ( & mut self , kind : & str , span : Span , values : String ) {
31
- let span_str = self . span . extent_str ( span) ;
25
+ fn record ( & mut self , kind : & str , span : SpanData , values : String ) {
26
+ let span_str = span_extent_str ( span) ;
32
27
if let Err ( _) = write ! ( self . output, "{},{}{}\n " , kind, span_str, values) {
33
28
error ! ( "Error writing output" ) ;
34
29
}
@@ -41,7 +36,7 @@ impl<'a, 'b, W: Write> CsvDumper<'a, 'b, W> {
41
36
}
42
37
}
43
38
44
- impl < ' a , ' b , W : Write + ' b > Dump for CsvDumper < ' a , ' b , W > {
39
+ impl < ' b , W : Write + ' b > Dump for CsvDumper < ' b , W > {
45
40
fn crate_prelude ( & mut self , data : CratePreludeData ) {
46
41
let values = make_values_str ( & [
47
42
( "name" , & data. crate_name ) ,
@@ -65,8 +60,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
65
60
}
66
61
67
62
fn enum_data ( & mut self , data : EnumData ) {
68
- let id = data. id . to_string ( ) ;
69
- let scope = data. scope . to_string ( ) ;
63
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
64
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
70
65
let values = make_values_str ( & [
71
66
( "id" , & id) ,
72
67
( "qualname" , & data. qualname ) ,
@@ -78,9 +73,9 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
78
73
}
79
74
80
75
fn extern_crate ( & mut self , data : ExternCrateData ) {
81
- let id = data. id . to_string ( ) ;
76
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
82
77
let crate_num = data. crate_num . to_string ( ) ;
83
- let scope = data. scope . to_string ( ) ;
78
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
84
79
let values = make_values_str ( & [
85
80
( "id" , & id) ,
86
81
( "name" , & data. name ) ,
@@ -96,12 +91,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
96
91
let self_ref = data. self_ref . unwrap_or ( null_def_id ( ) ) ;
97
92
let trait_ref = data. trait_ref . unwrap_or ( null_def_id ( ) ) ;
98
93
99
- let id = data. id . to_string ( ) ;
94
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
100
95
let ref_id = self_ref. index . as_usize ( ) . to_string ( ) ;
101
96
let ref_id_crate = self_ref. krate . to_string ( ) ;
102
97
let trait_id = trait_ref. index . as_usize ( ) . to_string ( ) ;
103
98
let trait_id_crate = trait_ref. krate . to_string ( ) ;
104
- let scope = data. scope . to_string ( ) ;
99
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
105
100
let values = make_values_str ( & [
106
101
( "id" , & id) ,
107
102
( "refid" , & ref_id) ,
@@ -117,8 +112,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
117
112
fn inheritance ( & mut self , data : InheritanceData ) {
118
113
let base_id = data. base_id . index . as_usize ( ) . to_string ( ) ;
119
114
let base_crate = data. base_id . krate . to_string ( ) ;
120
- let deriv_id = data. deriv_id . to_string ( ) ;
121
- let deriv_crate = 0 . to_string ( ) ;
115
+ let deriv_id = data. deriv_id . index . as_u32 ( ) . to_string ( ) ;
116
+ let deriv_crate = data . deriv_id . krate . to_string ( ) ;
122
117
let values = make_values_str ( & [
123
118
( "base" , & base_id) ,
124
119
( "basecrate" , & base_crate) ,
@@ -135,8 +130,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
135
130
None => ( String :: new ( ) , String :: new ( ) )
136
131
} ;
137
132
138
- let id = data. id . to_string ( ) ;
139
- let scope = data. scope . to_string ( ) ;
133
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
134
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
140
135
let values = make_values_str ( & [
141
136
( "id" , & id) ,
142
137
( "qualname" , & data. qualname ) ,
@@ -151,7 +146,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
151
146
fn function_ref ( & mut self , data : FunctionRefData ) {
152
147
let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
153
148
let ref_crate = data. ref_id . krate . to_string ( ) ;
154
- let scope = data. scope . to_string ( ) ;
149
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
155
150
let values = make_values_str ( & [
156
151
( "refid" , & ref_id) ,
157
152
( "refidcrate" , & ref_crate) ,
@@ -166,7 +161,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
166
161
let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
167
162
let ref_crate = data. ref_id . krate . to_string ( ) ;
168
163
let qualname = String :: new ( ) ;
169
- let scope = data. scope . to_string ( ) ;
164
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
170
165
let values = make_values_str ( & [
171
166
( "refid" , & ref_id) ,
172
167
( "refidcrate" , & ref_crate) ,
@@ -178,8 +173,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
178
173
}
179
174
180
175
fn method ( & mut self , data : MethodData ) {
181
- let id = data. id . to_string ( ) ;
182
- let scope = data. scope . to_string ( ) ;
176
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
177
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
183
178
let values = make_values_str ( & [
184
179
( "id" , & id) ,
185
180
( "qualname" , & data. qualname ) ,
@@ -199,7 +194,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
199
194
200
195
let def_id = ref_id. index . as_usize ( ) . to_string ( ) ;
201
196
let def_crate = ref_id. krate . to_string ( ) ;
202
- let scope = data. scope . to_string ( ) ;
197
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
203
198
let values = make_values_str ( & [
204
199
( "refid" , & def_id) ,
205
200
( "refidcrate" , & def_crate) ,
@@ -221,7 +216,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
221
216
}
222
217
223
218
fn macro_use ( & mut self , data : MacroUseData ) {
224
- let scope = data. scope . to_string ( ) ;
219
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
225
220
let values = make_values_str ( & [
226
221
( "callee_name" , & data. name ) ,
227
222
( "qualname" , & data. qualname ) ,
@@ -232,8 +227,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
232
227
}
233
228
234
229
fn mod_data ( & mut self , data : ModData ) {
235
- let id = data. id . to_string ( ) ;
236
- let scope = data. scope . to_string ( ) ;
230
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
231
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
237
232
let values = make_values_str ( & [
238
233
( "id" , & id) ,
239
234
( "qualname" , & data. qualname ) ,
@@ -250,7 +245,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
250
245
None => ( 0 . to_string ( ) , 0 . to_string ( ) )
251
246
} ;
252
247
253
- let scope = data. scope . to_string ( ) ;
248
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
254
249
let values = make_values_str ( & [
255
250
( "refid" , & ref_id) ,
256
251
( "refidcrate" , & ref_crate) ,
@@ -262,9 +257,9 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
262
257
}
263
258
264
259
fn struct_data ( & mut self , data : StructData ) {
265
- let id = data. id . to_string ( ) ;
266
- let ctor_id = data. ctor_id . to_string ( ) ;
267
- let scope = data. scope . to_string ( ) ;
260
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
261
+ let ctor_id = data. ctor_id . index . as_u32 ( ) . to_string ( ) ;
262
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
268
263
let values = make_values_str ( & [
269
264
( "id" , & id) ,
270
265
( "ctor_id" , & ctor_id) ,
@@ -277,8 +272,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
277
272
}
278
273
279
274
fn struct_variant ( & mut self , data : StructVariantData ) {
280
- let id = data. id . to_string ( ) ;
281
- let scope = data. scope . to_string ( ) ;
275
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
276
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
282
277
let values = make_values_str ( & [
283
278
( "id" , & id) ,
284
279
( "ctor_id" , & id) ,
@@ -292,8 +287,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
292
287
}
293
288
294
289
fn trait_data ( & mut self , data : TraitData ) {
295
- let id = data. id . to_string ( ) ;
296
- let scope = data. scope . to_string ( ) ;
290
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
291
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
297
292
let values = make_values_str ( & [
298
293
( "id" , & id) ,
299
294
( "qualname" , & data. qualname ) ,
@@ -305,8 +300,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
305
300
}
306
301
307
302
fn tuple_variant ( & mut self , data : TupleVariantData ) {
308
- let id = data. id . to_string ( ) ;
309
- let scope = data. scope . to_string ( ) ;
303
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
304
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
310
305
let values = make_values_str ( & [
311
306
( "id" , & id) ,
312
307
( "name" , & data. name ) ,
@@ -325,7 +320,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
325
320
None => ( 0 . to_string ( ) , 0 . to_string ( ) )
326
321
} ;
327
322
328
- let scope = data. scope . to_string ( ) ;
323
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
329
324
let values = make_values_str ( & [
330
325
( "refid" , & ref_id) ,
331
326
( "refidcrate" , & ref_crate) ,
@@ -337,7 +332,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
337
332
}
338
333
339
334
fn typedef ( & mut self , data : TypedefData ) {
340
- let id = data. id . to_string ( ) ;
335
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
341
336
let values = make_values_str ( & [
342
337
( "id" , & id) ,
343
338
( "qualname" , & data. qualname ) ,
@@ -350,10 +345,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
350
345
fn use_data ( & mut self , data : UseData ) {
351
346
let mod_id = data. mod_id . unwrap_or ( null_def_id ( ) ) ;
352
347
353
- let id = data. id . to_string ( ) ;
348
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
354
349
let ref_id = mod_id. index . as_usize ( ) . to_string ( ) ;
355
350
let ref_crate = mod_id. krate . to_string ( ) ;
356
- let scope = data. scope . to_string ( ) ;
351
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
357
352
let values = make_values_str ( & [
358
353
( "id" , & id) ,
359
354
( "refid" , & ref_id) ,
@@ -368,8 +363,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
368
363
fn use_glob ( & mut self , data : UseGlobData ) {
369
364
let names = data. names . join ( ", " ) ;
370
365
371
- let id = data. id . to_string ( ) ;
372
- let scope = data. scope . to_string ( ) ;
366
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
367
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
373
368
let values = make_values_str ( & [
374
369
( "id" , & id) ,
375
370
( "value" , & names) ,
@@ -380,8 +375,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
380
375
}
381
376
382
377
fn variable ( & mut self , data : VariableData ) {
383
- let id = data. id . to_string ( ) ;
384
- let scope = data. scope . to_string ( ) ;
378
+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
379
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
385
380
let values = make_values_str ( & [
386
381
( "id" , & id) ,
387
382
( "name" , & data. name ) ,
@@ -397,7 +392,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
397
392
fn variable_ref ( & mut self , data : VariableRefData ) {
398
393
let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
399
394
let ref_crate = data. ref_id . krate . to_string ( ) ;
400
- let scope = data. scope . to_string ( ) ;
395
+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
401
396
let values = make_values_str ( & [
402
397
( "refid" , & ref_id) ,
403
398
( "refidcrate" , & ref_crate) ,
@@ -431,9 +426,9 @@ fn make_values_str(pairs: &[(&'static str, &str)]) -> String {
431
426
} )
432
427
}
433
428
434
- fn null_def_id ( ) -> DefId {
435
- DefId {
436
- krate : 0 ,
437
- index : DefIndex :: new ( 0 ) ,
438
- }
429
+ fn span_extent_str ( span : SpanData ) -> String {
430
+ format ! ( "file_name, \" {} \" ,file_line,{},file_col,{},byte_start,{} \
431
+ file_line_end,{},file_col_end,{},byte_end,{}" ,
432
+ span . file_name , span . line_start , span . column_start , span . byte_start ,
433
+ span . line_end , span . column_end , span . byte_end )
439
434
}
0 commit comments