pub struct CsvDumper<'tcx, 'b, W: 'b> {
output: &'b mut W,
- dump_spans: bool,
span: SpanUtils<'tcx>
}
impl<'a, 'b, W: Write> CsvDumper<'a, 'b, W> {
pub fn new(writer: &'b mut W, span: SpanUtils<'a>) -> CsvDumper<'a, 'b, W> {
- CsvDumper { output: writer, dump_spans: false, span: span }
+ CsvDumper { output: writer, span: span }
}
fn record(&mut self, kind: &str, span: Span, values: String) {
error!("Error writing output '{}'", info);
}
}
-
- pub fn dump_span(&mut self, kind: &str, span: Span) {
- assert!(self.dump_spans);
- let result = format!("span,kind,{},{},text,\"{}\"\n",
- kind,
- self.span.extent_str(span),
- escape(self.span.snippet(span)));
- self.record_raw(&result);
- }
}
impl<'a, 'b, W: Write + 'b> Dump for CsvDumper<'a, 'b, W> {
self.record_raw("end_external_crates\n");
}
- fn enum_data(&mut self, span: Span, data: EnumData) {
- if self.dump_spans {
- self.dump_span("enum", span);
- return;
- }
-
+ fn enum_data(&mut self, data: EnumData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("enum", data.span, values);
}
- fn extern_crate(&mut self, span: Span, data: ExternCrateData) {
- if self.dump_spans {
- self.dump_span("extern_crate", span);
- return;
- }
-
+ fn extern_crate(&mut self, data: ExternCrateData) {
let id = data.id.to_string();
let crate_num = data.crate_num.to_string();
let scope = data.scope.to_string();
self.record("extern_crate", data.span, values);
}
- fn impl_data(&mut self, span: Span, data: ImplData) {
- if self.dump_spans {
- self.dump_span("impl", span);
- return;
- }
-
+ fn impl_data(&mut self, data: ImplData) {
let self_ref = data.self_ref.unwrap_or(null_def_id());
let trait_ref = data.trait_ref.unwrap_or(null_def_id());
}
fn inheritance(&mut self, data: InheritanceData) {
- if self.dump_spans {
- return;
- }
-
let base_id = data.base_id.index.as_usize().to_string();
let base_crate = data.base_id.krate.to_string();
let deriv_id = data.deriv_id.to_string();
self.record("inheritance", data.span, values);
}
- fn function(&mut self, span: Span, data: FunctionData) {
- if self.dump_spans {
- self.dump_span("function", span);
- return;
- }
-
+ fn function(&mut self, data: FunctionData) {
let (decl_id, decl_crate) = match data.declaration {
Some(id) => (id.index.as_usize().to_string(), id.krate.to_string()),
None => (String::new(), String::new())
self.record("function", data.span, values);
}
- fn function_ref(&mut self, span: Span, data: FunctionRefData) {
- if self.dump_spans {
- self.dump_span("fn_ref", span);
- return;
- }
-
+ fn function_ref(&mut self, data: FunctionRefData) {
let ref_id = data.ref_id.index.as_usize().to_string();
let ref_crate = data.ref_id.krate.to_string();
let scope = data.scope.to_string();
self.record("fn_ref", data.span, values);
}
- fn function_call(&mut self, span: Span, data: FunctionCallData) {
- if self.dump_spans {
- self.dump_span("fn_call", span);
- return;
- }
-
+ fn function_call(&mut self, data: FunctionCallData) {
let ref_id = data.ref_id.index.as_usize().to_string();
let ref_crate = data.ref_id.krate.to_string();
let qualname = String::new();
self.record("fn_call", data.span, values);
}
- fn method(&mut self, span: Span, data: MethodData) {
- if self.dump_spans {
- self.dump_span("method_decl", span);
- return;
- }
-
+ fn method(&mut self, data: MethodData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
("scopeid", &scope)
]);
- self.record("method_decl", span, values);
+ self.record("method_decl", data.span, values);
}
- fn method_call(&mut self, span: Span, data: MethodCallData) {
- if self.dump_spans {
- self.dump_span("method_call", span);
- return;
- }
-
+ fn method_call(&mut self, data: MethodCallData) {
let (dcn, dck) = match data.decl_id {
Some(declid) => (declid.index.as_usize().to_string(), declid.krate.to_string()),
None => (String::new(), String::new()),
self.record("method_call", data.span, values);
}
- fn macro_data(&mut self, span: Span, data: MacroData) {
- if self.dump_spans {
- self.dump_span("macro", span);
- return;
- }
-
+ fn macro_data(&mut self, data: MacroData) {
let values = make_values_str(&[
("name", &data.name),
("qualname", &data.qualname)
self.record("macro", data.span, values);
}
- fn macro_use(&mut self, span: Span, data: MacroUseData) {
- if self.dump_spans {
- self.dump_span("macro_use", span);
- return;
- }
-
+ fn macro_use(&mut self, data: MacroUseData) {
let scope = data.scope.to_string();
let values = make_values_str(&[
("callee_name", &data.name),
}
fn mod_data(&mut self, data: ModData) {
- if self.dump_spans {
- return;
- }
-
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("module", data.span, values);
}
- fn mod_ref(&mut self, span: Span, data: ModRefData) {
- if self.dump_spans {
- self.dump_span("mod_ref", span);
- return;
- }
-
+ fn mod_ref(&mut self, data: ModRefData) {
let (ref_id, ref_crate) = match data.ref_id {
Some(rid) => (rid.index.as_usize().to_string(), rid.krate.to_string()),
None => (0.to_string(), 0.to_string())
self.record("mod_ref", data.span, values);
}
- fn struct_data(&mut self, span: Span, data: StructData) {
- if self.dump_spans {
- self.dump_span("struct", span);
- return;
- }
-
+ fn struct_data(&mut self, data: StructData) {
let id = data.id.to_string();
let ctor_id = data.ctor_id.to_string();
let scope = data.scope.to_string();
self.record("struct", data.span, values);
}
- fn struct_variant(&mut self, span: Span, data: StructVariantData) {
- if self.dump_spans {
- self.dump_span("variant_struct", span);
- return;
- }
-
+ fn struct_variant(&mut self, data: StructVariantData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("variant_struct", data.span, values);
}
- fn trait_data(&mut self, span: Span, data: TraitData) {
- if self.dump_spans {
- self.dump_span("trait", span);
- return;
- }
-
+ fn trait_data(&mut self, data: TraitData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("trait", data.span, values);
}
- fn tuple_variant(&mut self, span: Span, data: TupleVariantData) {
- if self.dump_spans {
- self.dump_span("variant", span);
- return;
- }
-
+ fn tuple_variant(&mut self, data: TupleVariantData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("variant", data.span, values);
}
- fn type_ref(&mut self, span: Span, data: TypeRefData) {
- if self.dump_spans {
- self.dump_span("type_ref", span);
- return;
- }
-
+ fn type_ref(&mut self, data: TypeRefData) {
let (ref_id, ref_crate) = match data.ref_id {
Some(id) => (id.index.as_usize().to_string(), id.krate.to_string()),
None => (0.to_string(), 0.to_string())
self.record("type_ref", data.span, values);
}
- fn typedef(&mut self, span: Span, data: TypedefData) {
- if self.dump_spans {
- self.dump_span("typedef", span);
- return;
- }
-
+ fn typedef(&mut self, data: TypedefData) {
let id = data.id.to_string();
let values = make_values_str(&[
("id", &id),
self.record("typedef", data.span, values);
}
- fn use_data(&mut self, span: Span, data: UseData) {
- if self.dump_spans {
- self.dump_span("use_alias", span);
- return;
- }
-
+ fn use_data(&mut self, data: UseData) {
let mod_id = data.mod_id.unwrap_or(null_def_id());
let id = data.id.to_string();
self.record("use_alias", data.span, values);
}
- fn use_glob(&mut self, span: Span, data: UseGlobData) {
- if self.dump_spans {
- self.dump_span("use_glob", span);
- return;
- }
-
+ fn use_glob(&mut self, data: UseGlobData) {
let names = data.names.join(", ");
let id = data.id.to_string();
self.record("use_glob", data.span, values);
}
- fn variable(&mut self, span: Span, data: VariableData) {
- if self.dump_spans {
- self.dump_span("variable", span);
- return;
- }
-
+ fn variable(&mut self, data: VariableData) {
let id = data.id.to_string();
let scope = data.scope.to_string();
let values = make_values_str(&[
self.record("variable", data.span, values);
}
- fn variable_ref(&mut self, span: Span, data: VariableRefData) {
- if self.dump_spans {
- self.dump_span("var_ref", span);
- return;
- }
-
+ fn variable_ref(&mut self, data: VariableRefData) {
let ref_id = data.ref_id.index.as_usize().to_string();
let ref_crate = data.ref_id.krate.to_string();
let scope = data.scope.to_string();
pub trait Dump {
fn crate_prelude(&mut self, _: Span, _: CratePreludeData) {}
- fn enum_data(&mut self, _: Span, _: EnumData) {}
- fn extern_crate(&mut self, _: Span, _: ExternCrateData) {}
- fn impl_data(&mut self, _: Span, _: ImplData) {}
- fn inheritance(&mut self, _: InheritanceData) {}
- fn function(&mut self, _: Span, _: FunctionData) {}
- fn function_ref(&mut self, _: Span, _: FunctionRefData) {}
- fn function_call(&mut self, _: Span, _: FunctionCallData) {}
- fn method(&mut self, _: Span, _: MethodData) {}
- fn method_call(&mut self, _: Span, _: MethodCallData) {}
- fn macro_data(&mut self, _: Span, _: MacroData) {}
- fn macro_use(&mut self, _: Span, _: MacroUseData) {}
- fn mod_data(&mut self, _: ModData) {}
- fn mod_ref(&mut self, _: Span, _: ModRefData) {}
- fn struct_data(&mut self, _: Span, _: StructData) {}
- fn struct_variant(&mut self, _: Span, _: StructVariantData) {}
- fn trait_data(&mut self, _: Span, _: TraitData) {}
- fn tuple_variant(&mut self, _: Span, _: TupleVariantData) {}
- fn type_ref(&mut self, _: Span, _: TypeRefData) {}
- fn typedef(&mut self, _: Span, _: TypedefData) {}
- fn use_data(&mut self, _: Span, _: UseData) {}
- fn use_glob(&mut self, _: Span, _: UseGlobData) {}
- fn variable(&mut self, _: Span, _: VariableData) {}
- fn variable_ref(&mut self, _: Span, _: VariableRefData) {}
+ fn enum_data(&mut self, EnumData) {}
+ fn extern_crate(&mut self, ExternCrateData) {}
+ fn impl_data(&mut self, ImplData) {}
+ fn inheritance(&mut self, InheritanceData) {}
+ fn function(&mut self, FunctionData) {}
+ fn function_ref(&mut self, FunctionRefData) {}
+ fn function_call(&mut self, FunctionCallData) {}
+ fn method(&mut self, MethodData) {}
+ fn method_call(&mut self, MethodCallData) {}
+ fn macro_data(&mut self, MacroData) {}
+ fn macro_use(&mut self, MacroUseData) {}
+ fn mod_data(&mut self, ModData) {}
+ fn mod_ref(&mut self, ModRefData) {}
+ fn struct_data(&mut self, StructData) {}
+ fn struct_variant(&mut self, StructVariantData) {}
+ fn trait_data(&mut self, TraitData) {}
+ fn tuple_variant(&mut self, TupleVariantData) {}
+ fn type_ref(&mut self, TypeRefData) {}
+ fn typedef(&mut self, TypedefData) {}
+ fn use_data(&mut self, UseData) {}
+ fn use_glob(&mut self, UseGlobData) {}
+ fn variable(&mut self, VariableData) {}
+ fn variable_ref(&mut self, VariableRefData) {}
}
} else {
qualname.clone()
};
- self.dumper.mod_ref(path.span, ModRefData {
+ self.dumper.mod_ref(ModRefData {
span: *span,
qualname: qualname,
scope: self.cur_scope,
} else {
qualname.clone()
};
- self.dumper.mod_ref(path.span, ModRefData {
+ self.dumper.mod_ref(ModRefData {
span: *span,
qualname: qualname,
scope: self.cur_scope,
// write the trait part of the sub-path
let (ref span, ref qualname) = sub_paths[len-2];
- self.dumper.type_ref(path.span, TypeRefData {
+ self.dumper.type_ref(TypeRefData {
ref_id: None,
span: *span,
qualname: qualname.to_owned(),
}
let sub_paths = &sub_paths[..len-2];
for &(ref span, ref qualname) in sub_paths {
- self.dumper.mod_ref(path.span, ModRefData {
+ self.dumper.mod_ref(ModRefData {
span: *span,
qualname: qualname.to_owned(),
scope: self.cur_scope,
match def {
Def::Mod(_) |
Def::ForeignMod(_) => {
- self.dumper.mod_ref(span, ModRefData {
+ self.dumper.mod_ref(ModRefData {
span: sub_span.expect("No span found for mod ref"),
ref_id: Some(def_id),
scope: scope,
Def::TyAlias(..) |
Def::AssociatedTy(..) |
Def::Trait(_) => {
- self.dumper.type_ref(span, TypeRefData {
+ self.dumper.type_ref(TypeRefData {
span: sub_span.expect("No span found for type ref"),
ref_id: Some(def_id),
scope: scope,
Def::Local(..) |
Def::Variant(..) |
Def::Upvar(..) => {
- self.dumper.variable_ref(span, VariableRefData {
+ self.dumper.variable_ref(VariableRefData {
span: sub_span.expect("No span found for var ref"),
ref_id: def_id,
scope: scope,
}.normalize(&self.tcx));
}
Def::Fn(..) => {
- self.dumper.function_ref(span, FunctionRefData {
+ self.dumper.function_ref(FunctionRefData {
span: sub_span.expect("No span found for fn ref"),
ref_id: def_id,
scope: scope
// variable name, but who knows?)
let sub_span = span_utils.span_for_last_ident(p.span);
if !self.span.filter_generated(sub_span, p.span) {
- self.dumper.variable(p.span, VariableData {
+ self.dumper.variable(VariableData {
id: id,
span: sub_span.expect("No span found for variable"),
name: path_to_string(p),
if body.is_some() {
if !self.span.filter_generated(Some(method_data.span), span) {
- self.dumper.function(span, method_data.clone().normalize(&self.tcx));
+ self.dumper.function(method_data.clone().normalize(&self.tcx));
}
self.process_formals(&sig.decl.inputs, &method_data.qualname);
} else {
if !self.span.filter_generated(Some(method_data.span), span) {
- self.dumper.method(span, MethodData {
+ self.dumper.method(MethodData {
id: method_data.id,
span: method_data.span,
scope: method_data.scope,
let trait_ref_data = self.save_ctxt.get_trait_ref_data(trait_ref, self.cur_scope);
if let Some(trait_ref_data) = trait_ref_data {
if !self.span.filter_generated(Some(trait_ref_data.span), trait_ref.path.span) {
- self.dumper.type_ref(trait_ref.path.span, trait_ref_data.normalize(&self.tcx));
+ self.dumper.type_ref(trait_ref_data.normalize(&self.tcx));
}
visit::walk_path(self, &trait_ref.path);
if !self.span.filter_generated(Some(field_data.span), field.span) {
field_data.scope = normalize_node_id(&self.tcx, field_data.scope) as u32;
field_data.value = String::new();
- self.dumper.variable(field.span, field_data.normalize(&self.tcx));
+ self.dumper.variable(field_data.normalize(&self.tcx));
}
}
}
escape(self.span.snippet(param_ss)),
id);
if !self.span.filter_generated(Some(param_ss), full_span) {
- self.dumper.typedef(full_span, TypedefData {
+ self.dumper.typedef(TypedefData {
span: param_ss,
id: param.id,
qualname: name,
if let Some(fn_data) = self.save_ctxt.get_item_data(item) {
down_cast_data!(fn_data, FunctionData, item.span);
if !self.span.filter_generated(Some(fn_data.span), item.span) {
- self.dumper.function(item.span, fn_data.clone().normalize(&self.tcx));
+ self.dumper.function(fn_data.clone().normalize(&self.tcx));
}
self.process_formals(&decl.inputs, &fn_data.qualname);
if !self.span.filter_generated(Some(var_data.span), item.span) {
let mut var_data = var_data;
var_data.scope = normalize_node_id(&self.tcx, var_data.scope) as u32;
- self.dumper.variable(item.span, var_data.normalize(&self.tcx));
+ self.dumper.variable(var_data.normalize(&self.tcx));
}
}
self.visit_ty(&typ);
let sub_span = self.span.sub_span_after_keyword(span, keywords::Const);
if !self.span.filter_generated(sub_span, span) {
- self.dumper.variable(span, VariableData {
+ self.dumper.variable(VariableData {
span: sub_span.expect("No span found for variable"),
id: id,
name: name.to_string(),
let val = self.span.snippet(item.span);
let sub_span = self.span.sub_span_after_keyword(item.span, keywords::Struct);
if !self.span.filter_generated(sub_span, item.span) {
- self.dumper.struct_data(item.span, StructData {
+ self.dumper.struct_data(StructData {
span: sub_span.expect("No span found for struct"),
id: item.id,
ctor_id: def.id(),
down_cast_data!(enum_data, EnumData, item.span);
let normalized = enum_data.clone().normalize(&self.tcx);
if !self.span.filter_generated(Some(normalized.span), item.span) {
- self.dumper.enum_data(item.span, normalized);
+ self.dumper.enum_data(normalized);
}
for variant in &enum_definition.variants {
ast::VariantData::Struct(..) => {
let sub_span = self.span.span_for_first_ident(variant.span);
if !self.span.filter_generated(sub_span, variant.span) {
- self.dumper.struct_variant(variant.span, StructVariantData {
+ self.dumper.struct_variant(StructVariantData {
span: sub_span.expect("No span found for struct variant"),
id: variant.node.data.id(),
qualname: qualname,
_ => {
let sub_span = self.span.span_for_first_ident(variant.span);
if !self.span.filter_generated(sub_span, variant.span) {
- self.dumper.tuple_variant(variant.span, TupleVariantData {
+ self.dumper.tuple_variant(TupleVariantData {
span: sub_span.expect("No span found for tuple variant"),
id: variant.node.data.id(),
name: name.to_string(),
if let Some(ref self_ref) = impl_data.self_ref {
has_self_ref = true;
if !self.span.filter_generated(Some(self_ref.span), item.span) {
- self.dumper.type_ref(item.span, self_ref.clone().normalize(&self.tcx));
+ self.dumper.type_ref(self_ref.clone().normalize(&self.tcx));
}
}
if let Some(ref trait_ref_data) = impl_data.trait_ref {
if !self.span.filter_generated(Some(trait_ref_data.span), item.span) {
- self.dumper.type_ref(item.span, trait_ref_data.clone().normalize(&self.tcx));
+ self.dumper.type_ref(trait_ref_data.clone().normalize(&self.tcx));
}
visit::walk_path(self, &trait_ref.as_ref().unwrap().path);
}
if !self.span.filter_generated(Some(impl_data.span), item.span) {
- self.dumper.impl_data(item.span, ImplData {
+ self.dumper.impl_data(ImplData {
id: impl_data.id,
span: impl_data.span,
scope: impl_data.scope,
let val = self.span.snippet(item.span);
let sub_span = self.span.sub_span_after_keyword(item.span, keywords::Trait);
if !self.span.filter_generated(sub_span, item.span) {
- self.dumper.trait_data(item.span, TraitData {
+ self.dumper.trait_data(TraitData {
span: sub_span.expect("No span found for trait"),
id: item.id,
qualname: qualname.clone(),
if let Some(id) = self.lookup_type_ref(trait_ref.ref_id) {
let sub_span = self.span.sub_span_for_type_name(trait_ref.path.span);
if !self.span.filter_generated(sub_span, trait_ref.path.span) {
- self.dumper.type_ref(trait_ref.path.span, TypeRefData {
+ self.dumper.type_ref(TypeRefData {
span: sub_span.expect("No span found for trait ref"),
ref_id: Some(id),
scope: self.cur_scope,
if !self.span.filter_generated(Some(vrd.span), path.span) {
match ref_kind {
Some(recorder::TypeRef) => {
- self.dumper.type_ref(path.span, TypeRefData {
+ self.dumper.type_ref(TypeRefData {
span: vrd.span,
ref_id: Some(vrd.ref_id),
scope: vrd.scope,
}.normalize(&self.tcx));
}
Some(recorder::FnRef) => {
- self.dumper.function_ref(path.span, FunctionRefData {
+ self.dumper.function_ref(FunctionRefData {
span: vrd.span,
ref_id: vrd.ref_id,
scope: vrd.scope
}.normalize(&self.tcx));
}
Some(recorder::ModRef) => {
- self.dumper.mod_ref(path.span, ModRefData {
+ self.dumper.mod_ref( ModRefData {
span: vrd.span,
ref_id: Some(vrd.ref_id),
scope: vrd.scope,
}.normalize(&self.tcx));
}
Some(recorder::VarRef) | None
- => self.dumper.variable_ref(path.span, vrd.normalize(&self.tcx))
+ => self.dumper.variable_ref(vrd.normalize(&self.tcx))
}
}
}
Data::TypeRefData(trd) => {
if !self.span.filter_generated(Some(trd.span), path.span) {
- self.dumper.type_ref(path.span, trd.normalize(&self.tcx));
+ self.dumper.type_ref(trd.normalize(&self.tcx));
}
}
Data::MethodCallData(mcd) => {
if !self.span.filter_generated(Some(mcd.span), path.span) {
- self.dumper.method_call(path.span, mcd.normalize(&self.tcx));
+ self.dumper.method_call(mcd.normalize(&self.tcx));
}
}
Data::FunctionCallData(fcd) => {
if !self.span.filter_generated(Some(fcd.span), path.span) {
- self.dumper.function_call(path.span, fcd.normalize(&self.tcx));
+ self.dumper.function_call(fcd.normalize(&self.tcx));
}
}
_ => {
if let Some(struct_lit_data) = self.save_ctxt.get_expr_data(ex) {
down_cast_data!(struct_lit_data, TypeRefData, ex.span);
if !self.span.filter_generated(Some(struct_lit_data.span), ex.span) {
- self.dumper.type_ref(ex.span, struct_lit_data.normalize(&self.tcx));
+ self.dumper.type_ref(struct_lit_data.normalize(&self.tcx));
}
let scope = self.save_ctxt.enclosing_scope(ex.id);
.get_field_ref_data(field, variant, scope) {
if !self.span.filter_generated(Some(field_data.span), field.ident.span) {
- self.dumper.variable_ref(field.ident.span, field_data.normalize(&self.tcx));
+ self.dumper.variable_ref(field_data.normalize(&self.tcx));
}
}
if let Some(mcd) = self.save_ctxt.get_expr_data(ex) {
down_cast_data!(mcd, MethodCallData, ex.span);
if !self.span.filter_generated(Some(mcd.span), ex.span) {
- self.dumper.method_call(ex.span, mcd.normalize(&self.tcx));
+ self.dumper.method_call(mcd.normalize(&self.tcx));
}
}
let sub_span = self.span.span_for_first_ident(span);
if let Some(f) = variant.find_field_named(field.ident.name) {
if !self.span.filter_generated(sub_span, span) {
- self.dumper.variable_ref(span, VariableRefData {
+ self.dumper.variable_ref(VariableRefData {
span: sub_span.expect("No span fund for var ref"),
ref_id: f.did,
scope: self.cur_scope,
let sub_span = self.span.span_for_last_ident(p.span);
// Rust uses the id of the pattern for var lookups, so we'll use it too.
if !self.span.filter_generated(sub_span, p.span) {
- self.dumper.variable(p.span, VariableData {
+ self.dumper.variable(VariableData {
span: sub_span.expect("No span found for variable"),
id: id,
name: path_to_string(p),
&& !data.imported {
self.mac_defs.insert(data.callee_span);
if let Some(sub_span) = self.span.span_for_macro_def_name(data.callee_span) {
- self.dumper.macro_data(data.callee_span, MacroData {
+ self.dumper.macro_data(MacroData {
span: sub_span,
name: data.name.clone(),
qualname: qualname.clone()
if !self.mac_uses.contains(&data.span) {
self.mac_uses.insert(data.span);
if let Some(sub_span) = self.span.span_for_macro_use_name(data.span) {
- self.dumper.macro_use(data.span, MacroUseData {
+ self.dumper.macro_use(MacroUseData {
span: sub_span,
name: data.name,
qualname: qualname,
};
if !self.span.filter_generated(sub_span, path.span) {
- self.dumper.use_data(path.span, UseData {
+ self.dumper.use_data(UseData {
span: sub_span.expect("No span found for use"),
id: item.id,
mod_id: mod_id,
let sub_span = self.span
.sub_span_of_token(path.span, token::BinOp(token::Star));
if !self.span.filter_generated(sub_span, path.span) {
- self.dumper.use_glob(path.span, UseGlobData {
+ self.dumper.use_glob(UseGlobData {
span: sub_span.expect("No span found for use glob"),
id: item.id,
names: names,
};
if !self.span.filter_generated(alias_span, item.span) {
- self.dumper.extern_crate(item.span, ExternCrateData {
+ self.dumper.extern_crate(ExternCrateData {
id: item.id,
name: item.ident.to_string(),
crate_num: cnum,
let value = ty_to_string(&ty);
let sub_span = self.span.sub_span_after_keyword(item.span, keywords::Type);
if !self.span.filter_generated(sub_span, item.span) {
- self.dumper.typedef(item.span, TypedefData {
+ self.dumper.typedef(TypedefData {
span: sub_span.expect("No span found for typedef"),
id: item.id,
qualname: qualname.clone(),
if let Some(id) = self.lookup_type_ref(t.id) {
let sub_span = self.span.sub_span_for_type_name(t.span);
if !self.span.filter_generated(sub_span, t.span) {
- self.dumper.type_ref(t.span, TypeRefData {
+ self.dumper.type_ref(TypeRefData {
span: sub_span.expect("No span found for type ref"),
ref_id: Some(id),
scope: self.cur_scope,
if let Some(field_data) = self.save_ctxt.get_expr_data(ex) {
down_cast_data!(field_data, VariableRefData, ex.span);
if !self.span.filter_generated(Some(field_data.span), ex.span) {
- self.dumper.variable_ref(ex.span, field_data.normalize(&self.tcx));
+ self.dumper.variable_ref(field_data.normalize(&self.tcx));
}
}
}
ty::TyStruct(def, _) => {
let sub_span = self.span.sub_span_after_token(ex.span, token::Dot);
if !self.span.filter_generated(sub_span, ex.span) {
- self.dumper.variable_ref(ex.span, VariableRefData {
+ self.dumper.variable_ref(VariableRefData {
span: sub_span.expect("No span found for var ref"),
ref_id: def.struct_variant().fields[idx.node].did,
scope: self.cur_scope,
assert!(p.segments.len() == 1,
"qualified path for local variable def in arm");
if !self.span.filter_generated(Some(p.span), p.span) {
- self.dumper.variable(p.span, VariableData {
+ self.dumper.variable(VariableData {
span: p.span,
id: id,
name: path_to_string(p),