diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2016-05-12 16:29:07 -0700 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2016-05-13 12:23:41 -0700 |
| commit | 6d6986b87a23ca3fcc62636808ce625fc228bcc0 (patch) | |
| tree | 0c7a11aebf7ccdaa504c718ceadcea8a8ca2510a /src/librustc_save_analysis | |
| parent | 3e14f011eceea613b395619d41307cf8d87be84f (diff) | |
save-analysis: make DefIds prettier
Diffstat (limited to 'src/librustc_save_analysis')
| -rw-r--r-- | src/librustc_save_analysis/json_dumper.rs | 67 |
1 files changed, 42 insertions, 25 deletions
diff --git a/src/librustc_save_analysis/json_dumper.rs b/src/librustc_save_analysis/json_dumper.rs index bdbecdd1d53..610a9ac2ad6 100644 --- a/src/librustc_save_analysis/json_dumper.rs +++ b/src/librustc_save_analysis/json_dumper.rs @@ -36,9 +36,9 @@ impl<'b, W: Write> Drop for JsonDumper<'b, W> { } macro_rules! impl_fn { - ($fn_name: ident, $data_type: ident, $bin: ident) => { + ($fn_name: ident, $data_type: ident, $bucket: ident) => { fn $fn_name(&mut self, data: $data_type) { - self.result.$bin.push(From::from(data)); + self.result.$bucket.push(From::from(data)); } } } @@ -105,10 +105,27 @@ impl Analysis { } } +// DefId::index is a newtype and so the JSON serialisation is ugly. Therefore +// we use our own Id which is the same, but without the newtype. +#[derive(Debug, RustcEncodable)] +struct Id { + krate: u32, + index: u32, +} + +impl From<DefId> for Id { + fn from(id: DefId) -> Id { + Id { + krate: id.krate, + index: id.index.as_u32(), + } + } +} + #[derive(Debug, RustcEncodable)] struct Import { kind: ImportKind, - id: DefId, + id: Id, span: SpanData, name: String, value: String, @@ -125,7 +142,7 @@ impl From<ExternCrateData> for Import { fn from(data: ExternCrateData) -> Import { Import { kind: ImportKind::ExternCrate, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, value: String::new(), @@ -136,7 +153,7 @@ impl From<UseData> for Import { fn from(data: UseData) -> Import { Import { kind: ImportKind::Use, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, value: String::new(), @@ -147,7 +164,7 @@ impl From<UseGlobData> for Import { fn from(data: UseGlobData) -> Import { Import { kind: ImportKind::GlobUse, - id: data.id, + id: From::from(data.id), span: data.span, name: "*".to_owned(), value: data.names.join(", "), @@ -158,7 +175,7 @@ impl From<UseGlobData> for Import { #[derive(Debug, RustcEncodable)] struct Def { kind: DefKind, - id: DefId, + id: Id, span: SpanData, name: String, qualname: String, @@ -191,7 +208,7 @@ impl From<EnumData> for Def { fn from(data: EnumData) -> Def { Def { kind: DefKind::Enum, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -204,7 +221,7 @@ impl From<TupleVariantData> for Def { fn from(data: TupleVariantData) -> Def { Def { kind: DefKind::Tuple, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -216,7 +233,7 @@ impl From<StructVariantData> for Def { fn from(data: StructVariantData) -> Def { Def { kind: DefKind::Struct, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -228,7 +245,7 @@ impl From<StructData> for Def { fn from(data: StructData) -> Def { Def { kind: DefKind::Struct, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -240,7 +257,7 @@ impl From<TraitData> for Def { fn from(data: TraitData) -> Def { Def { kind: DefKind::Trait, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -252,7 +269,7 @@ impl From<FunctionData> for Def { fn from(data: FunctionData) -> Def { Def { kind: DefKind::Function, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -264,7 +281,7 @@ impl From<MethodData> for Def { fn from(data: MethodData) -> Def { Def { kind: DefKind::Function, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -276,7 +293,7 @@ impl From<MacroData> for Def { fn from(data: MacroData) -> Def { Def { kind: DefKind::Macro, - id: null_def_id(), + id: From::from(null_def_id()), span: data.span, name: data.name, qualname: data.qualname, @@ -288,7 +305,7 @@ impl From<ModData> for Def { fn from(data:ModData) -> Def { Def { kind: DefKind::Mod, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -300,7 +317,7 @@ impl From<TypeDefData> for Def { fn from(data: TypeDefData) -> Def { Def { kind: DefKind::Type, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -312,7 +329,7 @@ impl From<VariableData> for Def { fn from(data: VariableData) -> Def { Def { kind: DefKind::Variable, - id: data.id, + id: From::from(data.id), span: data.span, name: data.name, qualname: data.qualname, @@ -333,7 +350,7 @@ enum RefKind { struct Ref { kind: RefKind, span: SpanData, - ref_id: DefId, + ref_id: Id, } impl From<FunctionRefData> for Ref { @@ -341,7 +358,7 @@ impl From<FunctionRefData> for Ref { Ref { kind: RefKind::Function, span: data.span, - ref_id: data.ref_id, + ref_id: From::from(data.ref_id), } } } @@ -350,7 +367,7 @@ impl From<FunctionCallData> for Ref { Ref { kind: RefKind::Function, span: data.span, - ref_id: data.ref_id, + ref_id: From::from(data.ref_id), } } } @@ -359,7 +376,7 @@ impl From<MethodCallData> for Ref { Ref { kind: RefKind::Function, span: data.span, - ref_id: data.ref_id.or(data.decl_id).unwrap_or(null_def_id()), + ref_id: From::from(data.ref_id.or(data.decl_id).unwrap_or(null_def_id())), } } } @@ -368,7 +385,7 @@ impl From<ModRefData> for Ref { Ref { kind: RefKind::Mod, span: data.span, - ref_id: data.ref_id.unwrap_or(null_def_id()), + ref_id: From::from(data.ref_id.unwrap_or(null_def_id())), } } } @@ -377,7 +394,7 @@ impl From<TypeRefData> for Ref { Ref { kind: RefKind::Type, span: data.span, - ref_id: data.ref_id.unwrap_or(null_def_id()), + ref_id: From::from(data.ref_id.unwrap_or(null_def_id())), } } } @@ -386,7 +403,7 @@ impl From<VariableRefData> for Ref { Ref { kind: RefKind::Variable, span: data.span, - ref_id: data.ref_id, + ref_id: From::from(data.ref_id), } } } |
