1010
1111use std:: io:: Write ;
1212
13- use rustc:: hir:: def_id:: { DefId , DefIndex } ;
14- use syntax:: codemap:: Span ;
15-
16- use super :: data:: * ;
13+ use super :: external_data:: * ;
1714use super :: dump:: Dump ;
18- use super :: span_utils:: SpanUtils ;
1915
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
2318}
2419
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 }
2823 }
2924
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) ;
3227 if let Err ( _) = write ! ( self . output, "{},{}{}\n " , kind, span_str, values) {
3328 error ! ( "Error writing output" ) ;
3429 }
@@ -41,7 +36,7 @@ impl<'a, 'b, W: Write> CsvDumper<'a, 'b, W> {
4136 }
4237}
4338
44- impl < ' a , ' b , W : Write + ' b > Dump for CsvDumper < ' a , ' b , W > {
39+ impl < ' b , W : Write + ' b > Dump for CsvDumper < ' b , W > {
4540 fn crate_prelude ( & mut self , data : CratePreludeData ) {
4641 let values = make_values_str ( & [
4742 ( "name" , & data. crate_name ) ,
@@ -65,8 +60,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
6560 }
6661
6762 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 ( ) ;
7065 let values = make_values_str ( & [
7166 ( "id" , & id) ,
7267 ( "qualname" , & data. qualname ) ,
@@ -78,9 +73,9 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
7873 }
7974
8075 fn extern_crate ( & mut self , data : ExternCrateData ) {
81- let id = data. id . to_string ( ) ;
76+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
8277 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 ( ) ;
8479 let values = make_values_str ( & [
8580 ( "id" , & id) ,
8681 ( "name" , & data. name ) ,
@@ -96,12 +91,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
9691 let self_ref = data. self_ref . unwrap_or ( null_def_id ( ) ) ;
9792 let trait_ref = data. trait_ref . unwrap_or ( null_def_id ( ) ) ;
9893
99- let id = data. id . to_string ( ) ;
94+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
10095 let ref_id = self_ref. index . as_usize ( ) . to_string ( ) ;
10196 let ref_id_crate = self_ref. krate . to_string ( ) ;
10297 let trait_id = trait_ref. index . as_usize ( ) . to_string ( ) ;
10398 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 ( ) ;
105100 let values = make_values_str ( & [
106101 ( "id" , & id) ,
107102 ( "refid" , & ref_id) ,
@@ -117,8 +112,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
117112 fn inheritance ( & mut self , data : InheritanceData ) {
118113 let base_id = data. base_id . index . as_usize ( ) . to_string ( ) ;
119114 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 ( ) ;
122117 let values = make_values_str ( & [
123118 ( "base" , & base_id) ,
124119 ( "basecrate" , & base_crate) ,
@@ -135,8 +130,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
135130 None => ( String :: new ( ) , String :: new ( ) )
136131 } ;
137132
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 ( ) ;
140135 let values = make_values_str ( & [
141136 ( "id" , & id) ,
142137 ( "qualname" , & data. qualname ) ,
@@ -151,7 +146,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
151146 fn function_ref ( & mut self , data : FunctionRefData ) {
152147 let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
153148 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 ( ) ;
155150 let values = make_values_str ( & [
156151 ( "refid" , & ref_id) ,
157152 ( "refidcrate" , & ref_crate) ,
@@ -166,7 +161,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
166161 let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
167162 let ref_crate = data. ref_id . krate . to_string ( ) ;
168163 let qualname = String :: new ( ) ;
169- let scope = data. scope . to_string ( ) ;
164+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
170165 let values = make_values_str ( & [
171166 ( "refid" , & ref_id) ,
172167 ( "refidcrate" , & ref_crate) ,
@@ -178,8 +173,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
178173 }
179174
180175 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 ( ) ;
183178 let values = make_values_str ( & [
184179 ( "id" , & id) ,
185180 ( "qualname" , & data. qualname ) ,
@@ -199,7 +194,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
199194
200195 let def_id = ref_id. index . as_usize ( ) . to_string ( ) ;
201196 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 ( ) ;
203198 let values = make_values_str ( & [
204199 ( "refid" , & def_id) ,
205200 ( "refidcrate" , & def_crate) ,
@@ -221,7 +216,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
221216 }
222217
223218 fn macro_use ( & mut self , data : MacroUseData ) {
224- let scope = data. scope . to_string ( ) ;
219+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
225220 let values = make_values_str ( & [
226221 ( "callee_name" , & data. name ) ,
227222 ( "qualname" , & data. qualname ) ,
@@ -232,8 +227,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
232227 }
233228
234229 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 ( ) ;
237232 let values = make_values_str ( & [
238233 ( "id" , & id) ,
239234 ( "qualname" , & data. qualname ) ,
@@ -250,7 +245,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
250245 None => ( 0 . to_string ( ) , 0 . to_string ( ) )
251246 } ;
252247
253- let scope = data. scope . to_string ( ) ;
248+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
254249 let values = make_values_str ( & [
255250 ( "refid" , & ref_id) ,
256251 ( "refidcrate" , & ref_crate) ,
@@ -262,9 +257,9 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
262257 }
263258
264259 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 ( ) ;
268263 let values = make_values_str ( & [
269264 ( "id" , & id) ,
270265 ( "ctor_id" , & ctor_id) ,
@@ -277,8 +272,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
277272 }
278273
279274 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 ( ) ;
282277 let values = make_values_str ( & [
283278 ( "id" , & id) ,
284279 ( "ctor_id" , & id) ,
@@ -292,8 +287,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
292287 }
293288
294289 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 ( ) ;
297292 let values = make_values_str ( & [
298293 ( "id" , & id) ,
299294 ( "qualname" , & data. qualname ) ,
@@ -305,8 +300,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
305300 }
306301
307302 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 ( ) ;
310305 let values = make_values_str ( & [
311306 ( "id" , & id) ,
312307 ( "name" , & data. name ) ,
@@ -325,7 +320,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
325320 None => ( 0 . to_string ( ) , 0 . to_string ( ) )
326321 } ;
327322
328- let scope = data. scope . to_string ( ) ;
323+ let scope = data. scope . index . as_u32 ( ) . to_string ( ) ;
329324 let values = make_values_str ( & [
330325 ( "refid" , & ref_id) ,
331326 ( "refidcrate" , & ref_crate) ,
@@ -337,7 +332,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
337332 }
338333
339334 fn typedef ( & mut self , data : TypedefData ) {
340- let id = data. id . to_string ( ) ;
335+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
341336 let values = make_values_str ( & [
342337 ( "id" , & id) ,
343338 ( "qualname" , & data. qualname ) ,
@@ -350,10 +345,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
350345 fn use_data ( & mut self , data : UseData ) {
351346 let mod_id = data. mod_id . unwrap_or ( null_def_id ( ) ) ;
352347
353- let id = data. id . to_string ( ) ;
348+ let id = data. id . index . as_u32 ( ) . to_string ( ) ;
354349 let ref_id = mod_id. index . as_usize ( ) . to_string ( ) ;
355350 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 ( ) ;
357352 let values = make_values_str ( & [
358353 ( "id" , & id) ,
359354 ( "refid" , & ref_id) ,
@@ -368,8 +363,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
368363 fn use_glob ( & mut self , data : UseGlobData ) {
369364 let names = data. names . join ( ", " ) ;
370365
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 ( ) ;
373368 let values = make_values_str ( & [
374369 ( "id" , & id) ,
375370 ( "value" , & names) ,
@@ -380,8 +375,8 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
380375 }
381376
382377 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 ( ) ;
385380 let values = make_values_str ( & [
386381 ( "id" , & id) ,
387382 ( "name" , & data. name ) ,
@@ -397,7 +392,7 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
397392 fn variable_ref ( & mut self , data : VariableRefData ) {
398393 let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
399394 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 ( ) ;
401396 let values = make_values_str ( & [
402397 ( "refid" , & ref_id) ,
403398 ( "refidcrate" , & ref_crate) ,
@@ -431,9 +426,9 @@ fn make_values_str(pairs: &[(&'static str, &str)]) -> String {
431426 } )
432427}
433428
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 )
439434}
0 commit comments