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 ) ,
@@ -93,68 +88,50 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
93
88
}
94
89
95
90
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
-
99
91
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 ( ) ;
104
94
let scope = data. scope . to_string ( ) ;
105
95
let values = make_values_str ( & [
106
96
( "id" , & id) ,
107
97
( "refid" , & ref_id) ,
108
- ( "refidcrate" , & ref_id_crate) ,
109
98
( "traitid" , & trait_id) ,
110
- ( "traitidcrate" , & trait_id_crate) ,
111
99
( "scopeid" , & scope)
112
100
] ) ;
113
101
114
102
self . record ( "impl" , data. span , values) ;
115
103
}
116
104
117
105
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
+ ] ) ;
128
112
129
113
self . record ( "inheritance" , data. span , values) ;
130
114
}
131
115
132
116
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
-
138
117
let id = data. id . to_string ( ) ;
118
+ let decl_id = data. declaration . unwrap_or ( Id :: null ( ) ) . to_string ( ) ;
139
119
let scope = data. scope . to_string ( ) ;
140
120
let values = make_values_str ( & [
141
121
( "id" , & id) ,
142
122
( "qualname" , & data. qualname ) ,
143
123
( "declid" , & decl_id) ,
144
- ( "declidcrate" , & decl_crate) ,
145
124
( "scopeid" , & scope)
146
125
] ) ;
147
126
148
127
self . record ( "function" , data. span , values) ;
149
128
}
150
129
151
130
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 ( ) ;
154
132
let scope = data. scope . to_string ( ) ;
155
133
let values = make_values_str ( & [
156
134
( "refid" , & ref_id) ,
157
- ( "refidcrate" , & ref_crate) ,
158
135
( "qualname" , "" ) ,
159
136
( "scopeid" , & scope)
160
137
] ) ;
@@ -163,13 +140,11 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
163
140
}
164
141
165
142
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 ( ) ;
168
144
let qualname = String :: new ( ) ;
169
145
let scope = data. scope . to_string ( ) ;
170
146
let values = make_values_str ( & [
171
147
( "refid" , & ref_id) ,
172
- ( "refidcrate" , & ref_crate) ,
173
148
( "qualname" , & qualname) ,
174
149
( "scopeid" , & scope)
175
150
] ) ;
@@ -190,21 +165,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
190
165
}
191
166
192
167
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 ( ) ;
202
170
let scope = data. scope . to_string ( ) ;
203
171
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) ,
208
174
( "scopeid" , & scope)
209
175
] ) ;
210
176
@@ -245,15 +211,11 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
245
211
}
246
212
247
213
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 ( ) ;
252
215
253
216
let scope = data. scope . to_string ( ) ;
254
217
let values = make_values_str ( & [
255
218
( "refid" , & ref_id) ,
256
- ( "refidcrate" , & ref_crate) ,
257
219
( "qualname" , & data. qualname ) ,
258
220
( "scopeid" , & scope)
259
221
] ) ;
@@ -320,15 +282,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
320
282
}
321
283
322
284
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 ( ) ;
328
286
let scope = data. scope . to_string ( ) ;
329
287
let values = make_values_str ( & [
330
288
( "refid" , & ref_id) ,
331
- ( "refidcrate" , & ref_crate) ,
332
289
( "qualname" , & data. qualname ) ,
333
290
( "scopeid" , & scope)
334
291
] ) ;
@@ -348,16 +305,12 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
348
305
}
349
306
350
307
fn use_data ( & mut self , data : UseData ) {
351
- let mod_id = data. mod_id . unwrap_or ( null_def_id ( ) ) ;
352
-
353
308
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 ( ) ;
356
310
let scope = data. scope . to_string ( ) ;
357
311
let values = make_values_str ( & [
358
312
( "id" , & id) ,
359
- ( "refid" , & ref_id) ,
360
- ( "refidcrate" , & ref_crate) ,
313
+ ( "mod_id" , & mod_id) ,
361
314
( "name" , & data. name ) ,
362
315
( "scopeid" , & scope)
363
316
] ) ;
@@ -395,12 +348,10 @@ impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
395
348
}
396
349
397
350
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 ( ) ;
400
352
let scope = data. scope . to_string ( ) ;
401
353
let values = make_values_str ( & [
402
- ( "refid" , & ref_id) ,
403
- ( "refidcrate" , & ref_crate) ,
354
+ ( "id" , & id) ,
404
355
( "qualname" , "" ) ,
405
356
( "scopeid" , & scope)
406
357
] ) ;
@@ -431,9 +382,9 @@ fn make_values_str(pairs: &[(&'static str, &str)]) -> String {
431
382
} )
432
383
}
433
384
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 )
439
390
}
0 commit comments