Skip to content

Commit 01be25b

Browse files
committed
Use crate/index pair for def ids
1 parent ca6062d commit 01be25b

File tree

2 files changed

+201
-179
lines changed

2 files changed

+201
-179
lines changed

src/librustc_save_analysis/csv_dumper.rs

+100-56
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
6060
}
6161

6262
fn enum_data(&mut self, data: EnumData) {
63-
let id = data.id.to_string();
64-
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();
6565
let values = make_values_str(&[
6666
("id", &id),
6767
("qualname", &data.qualname),
@@ -73,9 +73,9 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
7373
}
7474

7575
fn extern_crate(&mut self, data: ExternCrateData) {
76-
let id = data.id.to_string();
76+
let id = data.id.index.as_u32().to_string();
7777
let crate_num = data.crate_num.to_string();
78-
let scope = data.scope.to_string();
78+
let scope = data.scope.index.as_u32().to_string();
7979
let values = make_values_str(&[
8080
("id", &id),
8181
("name", &data.name),
@@ -88,50 +88,68 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
8888
}
8989

9090
fn impl_data(&mut self, data: ImplData) {
91-
let id = data.id.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();
94-
let scope = data.scope.to_string();
91+
let self_ref = data.self_ref.unwrap_or(null_def_id());
92+
let trait_ref = data.trait_ref.unwrap_or(null_def_id());
93+
94+
let id = data.id.index.as_u32().to_string();
95+
let ref_id = self_ref.index.as_usize().to_string();
96+
let ref_id_crate = self_ref.krate.to_string();
97+
let trait_id = trait_ref.index.as_usize().to_string();
98+
let trait_id_crate = trait_ref.krate.to_string();
99+
let scope = data.scope.index.as_u32().to_string();
95100
let values = make_values_str(&[
96101
("id", &id),
97102
("refid", &ref_id),
103+
("refidcrate", &ref_id_crate),
98104
("traitid", &trait_id),
105+
("traitidcrate", &trait_id_crate),
99106
("scopeid", &scope)
100107
]);
101108

102109
self.record("impl", data.span, values);
103110
}
104111

105112
fn inheritance(&mut self, data: InheritanceData) {
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-
]);
113+
let base_id = data.base_id.index.as_usize().to_string();
114+
let base_crate = data.base_id.krate.to_string();
115+
let deriv_id = data.deriv_id.index.as_u32().to_string();
116+
let deriv_crate = data.deriv_id.krate.to_string();
117+
let values = make_values_str(&[
118+
("base", &base_id),
119+
("basecrate", &base_crate),
120+
("derived", &deriv_id),
121+
("derivedcrate", &deriv_crate)
122+
]);
112123

113124
self.record("inheritance", data.span, values);
114125
}
115126

116127
fn function(&mut self, data: FunctionData) {
117-
let id = data.id.to_string();
118-
let decl_id = data.declaration.unwrap_or(Id::null()).to_string();
119-
let scope = data.scope.to_string();
128+
let (decl_id, decl_crate) = match data.declaration {
129+
Some(id) => (id.index.as_usize().to_string(), id.krate.to_string()),
130+
None => (String::new(), String::new())
131+
};
132+
133+
let id = data.id.index.as_u32().to_string();
134+
let scope = data.scope.index.as_u32().to_string();
120135
let values = make_values_str(&[
121136
("id", &id),
122137
("qualname", &data.qualname),
123138
("declid", &decl_id),
139+
("declidcrate", &decl_crate),
124140
("scopeid", &scope)
125141
]);
126142

127143
self.record("function", data.span, values);
128144
}
129145

130146
fn function_ref(&mut self, data: FunctionRefData) {
131-
let ref_id = data.ref_id.to_string();
132-
let scope = data.scope.to_string();
147+
let ref_id = data.ref_id.index.as_usize().to_string();
148+
let ref_crate = data.ref_id.krate.to_string();
149+
let scope = data.scope.index.as_u32().to_string();
133150
let values = make_values_str(&[
134151
("refid", &ref_id),
152+
("refidcrate", &ref_crate),
135153
("qualname", ""),
136154
("scopeid", &scope)
137155
]);
@@ -140,11 +158,13 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
140158
}
141159

142160
fn function_call(&mut self, data: FunctionCallData) {
143-
let ref_id = data.ref_id.to_string();
161+
let ref_id = data.ref_id.index.as_usize().to_string();
162+
let ref_crate = data.ref_id.krate.to_string();
144163
let qualname = String::new();
145-
let scope = data.scope.to_string();
164+
let scope = data.scope.index.as_u32().to_string();
146165
let values = make_values_str(&[
147166
("refid", &ref_id),
167+
("refidcrate", &ref_crate),
148168
("qualname", &qualname),
149169
("scopeid", &scope)
150170
]);
@@ -153,8 +173,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
153173
}
154174

155175
fn method(&mut self, data: MethodData) {
156-
let id = data.id.to_string();
157-
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();
158178
let values = make_values_str(&[
159179
("id", &id),
160180
("qualname", &data.qualname),
@@ -165,12 +185,21 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
165185
}
166186

167187
fn method_call(&mut self, data: MethodCallData) {
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();
170-
let scope = data.scope.to_string();
188+
let (dcn, dck) = match data.decl_id {
189+
Some(declid) => (declid.index.as_usize().to_string(), declid.krate.to_string()),
190+
None => (String::new(), String::new()),
191+
};
192+
193+
let ref_id = data.ref_id.unwrap_or(null_def_id());
194+
195+
let def_id = ref_id.index.as_usize().to_string();
196+
let def_crate = ref_id.krate.to_string();
197+
let scope = data.scope.index.as_u32().to_string();
171198
let values = make_values_str(&[
172-
("refid", &ref_id),
173-
("declid", &decl_id),
199+
("refid", &def_id),
200+
("refidcrate", &def_crate),
201+
("declid", &dcn),
202+
("declidcrate", &dck),
174203
("scopeid", &scope)
175204
]);
176205

@@ -187,7 +216,7 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
187216
}
188217

189218
fn macro_use(&mut self, data: MacroUseData) {
190-
let scope = data.scope.to_string();
219+
let scope = data.scope.index.as_u32().to_string();
191220
let values = make_values_str(&[
192221
("callee_name", &data.name),
193222
("qualname", &data.qualname),
@@ -198,8 +227,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
198227
}
199228

200229
fn mod_data(&mut self, data: ModData) {
201-
let id = data.id.to_string();
202-
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();
203232
let values = make_values_str(&[
204233
("id", &id),
205234
("qualname", &data.qualname),
@@ -211,11 +240,15 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
211240
}
212241

213242
fn mod_ref(&mut self, data: ModRefData) {
214-
let ref_id = data.ref_id.unwrap_or(Id::null()).to_string();
243+
let (ref_id, ref_crate) = match data.ref_id {
244+
Some(rid) => (rid.index.as_usize().to_string(), rid.krate.to_string()),
245+
None => (0.to_string(), 0.to_string())
246+
};
215247

216-
let scope = data.scope.to_string();
248+
let scope = data.scope.index.as_u32().to_string();
217249
let values = make_values_str(&[
218250
("refid", &ref_id),
251+
("refidcrate", &ref_crate),
219252
("qualname", &data.qualname),
220253
("scopeid", &scope)
221254
]);
@@ -224,9 +257,9 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
224257
}
225258

226259
fn struct_data(&mut self, data: StructData) {
227-
let id = data.id.to_string();
228-
let ctor_id = data.ctor_id.to_string();
229-
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();
230263
let values = make_values_str(&[
231264
("id", &id),
232265
("ctor_id", &ctor_id),
@@ -239,8 +272,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
239272
}
240273

241274
fn struct_variant(&mut self, data: StructVariantData) {
242-
let id = data.id.to_string();
243-
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();
244277
let values = make_values_str(&[
245278
("id", &id),
246279
("ctor_id", &id),
@@ -254,8 +287,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
254287
}
255288

256289
fn trait_data(&mut self, data: TraitData) {
257-
let id = data.id.to_string();
258-
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();
259292
let values = make_values_str(&[
260293
("id", &id),
261294
("qualname", &data.qualname),
@@ -267,8 +300,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
267300
}
268301

269302
fn tuple_variant(&mut self, data: TupleVariantData) {
270-
let id = data.id.to_string();
271-
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();
272305
let values = make_values_str(&[
273306
("id", &id),
274307
("name", &data.name),
@@ -282,10 +315,15 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
282315
}
283316

284317
fn type_ref(&mut self, data: TypeRefData) {
285-
let ref_id = data.ref_id.unwrap_or(Id::null()).to_string();
286-
let scope = data.scope.to_string();
318+
let (ref_id, ref_crate) = match data.ref_id {
319+
Some(id) => (id.index.as_usize().to_string(), id.krate.to_string()),
320+
None => (0.to_string(), 0.to_string())
321+
};
322+
323+
let scope = data.scope.index.as_u32().to_string();
287324
let values = make_values_str(&[
288325
("refid", &ref_id),
326+
("refidcrate", &ref_crate),
289327
("qualname", &data.qualname),
290328
("scopeid", &scope)
291329
]);
@@ -294,7 +332,7 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
294332
}
295333

296334
fn typedef(&mut self, data: TypedefData) {
297-
let id = data.id.to_string();
335+
let id = data.id.index.as_u32().to_string();
298336
let values = make_values_str(&[
299337
("id", &id),
300338
("qualname", &data.qualname),
@@ -305,12 +343,16 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
305343
}
306344

307345
fn use_data(&mut self, data: UseData) {
308-
let id = data.id.to_string();
309-
let mod_id = data.mod_id.unwrap_or(Id::null()).to_string();
310-
let scope = data.scope.to_string();
346+
let mod_id = data.mod_id.unwrap_or(null_def_id());
347+
348+
let id = data.id.index.as_u32().to_string();
349+
let ref_id = mod_id.index.as_usize().to_string();
350+
let ref_crate = mod_id.krate.to_string();
351+
let scope = data.scope.index.as_u32().to_string();
311352
let values = make_values_str(&[
312353
("id", &id),
313-
("mod_id", &mod_id),
354+
("refid", &ref_id),
355+
("refidcrate", &ref_crate),
314356
("name", &data.name),
315357
("scopeid", &scope)
316358
]);
@@ -321,8 +363,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
321363
fn use_glob(&mut self, data: UseGlobData) {
322364
let names = data.names.join(", ");
323365

324-
let id = data.id.to_string();
325-
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();
326368
let values = make_values_str(&[
327369
("id", &id),
328370
("value", &names),
@@ -333,8 +375,8 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
333375
}
334376

335377
fn variable(&mut self, data: VariableData) {
336-
let id = data.id.to_string();
337-
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();
338380
let values = make_values_str(&[
339381
("id", &id),
340382
("name", &data.name),
@@ -348,10 +390,12 @@ impl<'b, W: Write + 'b> Dump for CsvDumper<'b, W> {
348390
}
349391

350392
fn variable_ref(&mut self, data: VariableRefData) {
351-
let id = data.ref_id.to_string();
352-
let scope = data.scope.to_string();
393+
let ref_id = data.ref_id.index.as_usize().to_string();
394+
let ref_crate = data.ref_id.krate.to_string();
395+
let scope = data.scope.index.as_u32().to_string();
353396
let values = make_values_str(&[
354-
("id", &id),
397+
("refid", &ref_id),
398+
("refidcrate", &ref_crate),
355399
("qualname", ""),
356400
("scopeid", &scope)
357401
]);

0 commit comments

Comments
 (0)