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 ) ,
@@ -93,68 +88,50 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
9388 }
9489
9590 fn impl_data ( & mut self , data : ImplData ) {
96- let self_ref = data. self_ref . unwrap_or ( null_def_id ( ) ) ;
97- let trait_ref = data. trait_ref . unwrap_or ( null_def_id ( ) ) ;
98-
9991 let id = data. id . to_string ( ) ;
100- let ref_id = self_ref. index . as_usize ( ) . to_string ( ) ;
101- let ref_id_crate = self_ref. krate . to_string ( ) ;
102- let trait_id = trait_ref. index . as_usize ( ) . to_string ( ) ;
103- let trait_id_crate = trait_ref. krate . to_string ( ) ;
92+ let ref_id = data. self_ref . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
93+ let trait_id = data. trait_ref . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
10494 let scope = data. scope . to_string ( ) ;
10595 let values = make_values_str ( & [
10696 ( "id" , & id) ,
10797 ( "refid" , & ref_id) ,
108- ( "refidcrate" , & ref_id_crate) ,
10998 ( "traitid" , & trait_id) ,
110- ( "traitidcrate" , & trait_id_crate) ,
11199 ( "scopeid" , & scope)
112100 ] ) ;
113101
114102 self . record ( "impl" , data. span , values) ;
115103 }
116104
117105 fn inheritance ( & mut self , data : InheritanceData ) {
118- let base_id = data. base_id . index . as_usize ( ) . to_string ( ) ;
119- 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 ( ) ;
122- let values = make_values_str ( & [
123- ( "base" , & base_id) ,
124- ( "basecrate" , & base_crate) ,
125- ( "derived" , & deriv_id) ,
126- ( "derivedcrate" , & deriv_crate)
127- ] ) ;
106+ let base_id = data. base_id . to_string ( ) ;
107+ let deriv_id = data. deriv_id . to_string ( ) ;
108+ let values = make_values_str ( & [
109+ ( "base" , & base_id) ,
110+ ( "derived" , & deriv_id) ,
111+ ] ) ;
128112
129113 self . record ( "inheritance" , data. span , values) ;
130114 }
131115
132116 fn function ( & mut self , data : FunctionData ) {
133- let ( decl_id, decl_crate) = match data. declaration {
134- Some ( id) => ( id. index . as_usize ( ) . to_string ( ) , id. krate . to_string ( ) ) ,
135- None => ( String :: new ( ) , String :: new ( ) )
136- } ;
137-
138117 let id = data. id . to_string ( ) ;
118+ let decl_id = data. declaration . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
139119 let scope = data. scope . to_string ( ) ;
140120 let values = make_values_str ( & [
141121 ( "id" , & id) ,
142122 ( "qualname" , & data. qualname ) ,
143123 ( "declid" , & decl_id) ,
144- ( "declidcrate" , & decl_crate) ,
145124 ( "scopeid" , & scope)
146125 ] ) ;
147126
148127 self . record ( "function" , data. span , values) ;
149128 }
150129
151130 fn function_ref ( & mut self , data : FunctionRefData ) {
152- let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
153- let ref_crate = data. ref_id . krate . to_string ( ) ;
131+ let ref_id = data. ref_id . to_string ( ) ;
154132 let scope = data. scope . to_string ( ) ;
155133 let values = make_values_str ( & [
156134 ( "refid" , & ref_id) ,
157- ( "refidcrate" , & ref_crate) ,
158135 ( "qualname" , "" ) ,
159136 ( "scopeid" , & scope)
160137 ] ) ;
@@ -163,13 +140,11 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
163140 }
164141
165142 fn function_call ( & mut self , data : FunctionCallData ) {
166- let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
167- let ref_crate = data. ref_id . krate . to_string ( ) ;
143+ let ref_id = data. ref_id . to_string ( ) ;
168144 let qualname = String :: new ( ) ;
169145 let scope = data. scope . to_string ( ) ;
170146 let values = make_values_str ( & [
171147 ( "refid" , & ref_id) ,
172- ( "refidcrate" , & ref_crate) ,
173148 ( "qualname" , & qualname) ,
174149 ( "scopeid" , & scope)
175150 ] ) ;
@@ -190,21 +165,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
190165 }
191166
192167 fn method_call ( & mut self , data : MethodCallData ) {
193- let ( dcn, dck) = match data. decl_id {
194- Some ( declid) => ( declid. index . as_usize ( ) . to_string ( ) , declid. krate . to_string ( ) ) ,
195- None => ( String :: new ( ) , String :: new ( ) ) ,
196- } ;
197-
198- let ref_id = data. ref_id . unwrap_or ( null_def_id ( ) ) ;
199-
200- let def_id = ref_id. index . as_usize ( ) . to_string ( ) ;
201- let def_crate = ref_id. krate . to_string ( ) ;
168+ let decl_id = data. decl_id . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
169+ let ref_id = data. ref_id . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
202170 let scope = data. scope . to_string ( ) ;
203171 let values = make_values_str ( & [
204- ( "refid" , & def_id) ,
205- ( "refidcrate" , & def_crate) ,
206- ( "declid" , & dcn) ,
207- ( "declidcrate" , & dck) ,
172+ ( "refid" , & ref_id) ,
173+ ( "declid" , & decl_id) ,
208174 ( "scopeid" , & scope)
209175 ] ) ;
210176
@@ -245,15 +211,11 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
245211 }
246212
247213 fn mod_ref ( & mut self , data : ModRefData ) {
248- let ( ref_id, ref_crate) = match data. ref_id {
249- Some ( rid) => ( rid. index . as_usize ( ) . to_string ( ) , rid. krate . to_string ( ) ) ,
250- None => ( 0 . to_string ( ) , 0 . to_string ( ) )
251- } ;
214+ let ref_id = data. ref_id . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
252215
253216 let scope = data. scope . to_string ( ) ;
254217 let values = make_values_str ( & [
255218 ( "refid" , & ref_id) ,
256- ( "refidcrate" , & ref_crate) ,
257219 ( "qualname" , & data. qualname ) ,
258220 ( "scopeid" , & scope)
259221 ] ) ;
@@ -320,15 +282,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
320282 }
321283
322284 fn type_ref ( & mut self , data : TypeRefData ) {
323- let ( ref_id, ref_crate) = match data. ref_id {
324- Some ( id) => ( id. index . as_usize ( ) . to_string ( ) , id. krate . to_string ( ) ) ,
325- None => ( 0 . to_string ( ) , 0 . to_string ( ) )
326- } ;
327-
285+ let ref_id = data. ref_id . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
328286 let scope = data. scope . to_string ( ) ;
329287 let values = make_values_str ( & [
330288 ( "refid" , & ref_id) ,
331- ( "refidcrate" , & ref_crate) ,
332289 ( "qualname" , & data. qualname ) ,
333290 ( "scopeid" , & scope)
334291 ] ) ;
@@ -348,16 +305,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
348305 }
349306
350307 fn use_data ( & mut self , data : UseData ) {
351- let mod_id = data. mod_id . unwrap_or ( null_def_id ( ) ) ;
352-
353308 let id = data. id . to_string ( ) ;
354- let ref_id = mod_id. index . as_usize ( ) . to_string ( ) ;
355- let ref_crate = mod_id. krate . to_string ( ) ;
309+ let mod_id = data. mod_id . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
356310 let scope = data. scope . to_string ( ) ;
357311 let values = make_values_str ( & [
358312 ( "id" , & id) ,
359- ( "refid" , & ref_id) ,
360- ( "refidcrate" , & ref_crate) ,
313+ ( "mod_id" , & mod_id) ,
361314 ( "name" , & data. name ) ,
362315 ( "scopeid" , & scope)
363316 ] ) ;
@@ -395,12 +348,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
395348 }
396349
397350 fn variable_ref ( & mut self , data : VariableRefData ) {
398- let ref_id = data. ref_id . index . as_usize ( ) . to_string ( ) ;
399- let ref_crate = data. ref_id . krate . to_string ( ) ;
351+ let id = data. ref_id . to_string ( ) ;
400352 let scope = data. scope . to_string ( ) ;
401353 let values = make_values_str ( & [
402- ( "refid" , & ref_id) ,
403- ( "refidcrate" , & ref_crate) ,
354+ ( "id" , & id) ,
404355 ( "qualname" , "" ) ,
405356 ( "scopeid" , & scope)
406357 ] ) ;
@@ -431,9 +382,9 @@ fn make_values_str(pairs: &[(&'static str, &str)]) -> String {
431382 } )
432383}
433384
434- fn null_def_id ( ) -> DefId {
435- DefId {
436- krate : 0 ,
437- index : DefIndex :: new ( 0 ) ,
438- }
385+ fn span_extent_str ( span : SpanData ) -> String {
386+ format ! ( "file_name, \" {} \" ,file_line,{},file_col,{},byte_start,{} \
387+ file_line_end,{},file_col_end,{},byte_end,{}" ,
388+ span . file_name , span . line_start , span . column_start , span . byte_start ,
389+ span . line_end , span . column_end , span . byte_end )
439390}
0 commit comments