diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2016-11-22 10:05:25 +1300 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2016-12-22 15:17:05 +1300 |
| commit | e9ecd8805dadbac76173e5207c18b42374e0aba1 (patch) | |
| tree | 8e87c960b2a2e98e866c64640965c94ad8455007 | |
| parent | eb27b5166e9e35cd315acda6b6db91fe4c220fcd (diff) | |
| download | rust-e9ecd8805dadbac76173e5207c18b42374e0aba1.tar.gz rust-e9ecd8805dadbac76173e5207c18b42374e0aba1.zip | |
further lowering of signature data
| -rw-r--r-- | src/librustc_save_analysis/json_api_dumper.rs | 49 | ||||
| -rw-r--r-- | src/librustc_save_analysis/json_dumper.rs | 48 |
2 files changed, 89 insertions, 8 deletions
diff --git a/src/librustc_save_analysis/json_api_dumper.rs b/src/librustc_save_analysis/json_api_dumper.rs index b349d15e62f..777e64fe77f 100644 --- a/src/librustc_save_analysis/json_api_dumper.rs +++ b/src/librustc_save_analysis/json_api_dumper.rs @@ -14,7 +14,7 @@ use rustc::hir::def_id::DefId; use rustc_serialize::json::as_json; use external_data::*; -use data::{VariableKind, Visibility}; +use data::{VariableKind, Visibility, SigElement}; use dump::Dump; use super::Format; @@ -179,7 +179,7 @@ struct Def { children: Vec<Id>, decl_id: Option<Id>, docs: String, - sig: Option<Signature>, + sig: Option<JsonSignature>, } #[derive(Debug, RustcEncodable)] @@ -277,7 +277,7 @@ impl From<StructData> for Option<Def> { children: data.fields.into_iter().map(|id| From::from(id)).collect(), decl_id: None, docs: data.docs, - sig: Some(data.sig), + sig: Some(From::from(data.sig)), }), _ => None, } @@ -400,6 +400,7 @@ impl From<TypeDefData> for Option<Def> { } } } + impl From<VariableData> for Option<Def> { fn from(data: VariableData) -> Option<Def> { match data.visibility { @@ -419,9 +420,49 @@ impl From<VariableData> for Option<Def> { parent: data.parent.map(|id| From::from(id)), decl_id: None, docs: data.docs, - sig: data.sig, + sig: data.sig.map(|s| From::from(s)), }), _ => None, } } } + +#[derive(Debug, RustcEncodable)] +pub struct JsonSignature { + span: SpanData, + text: String, + ident_start: usize, + ident_end: usize, + defs: Vec<JsonSigElement>, + refs: Vec<JsonSigElement>, +} + +impl From<Signature> for JsonSignature { + fn from(data: Signature) -> JsonSignature { + JsonSignature { + span: data.span, + text: data.text, + ident_start: data.ident_start, + ident_end: data.ident_end, + defs: data.defs.into_iter().map(|s| From::from(s)).collect(), + refs: data.refs.into_iter().map(|s| From::from(s)).collect(), + } + } +} + +#[derive(Debug, RustcEncodable)] +pub struct JsonSigElement { + id: Id, + start: usize, + end: usize, +} + +impl From<SigElement> for JsonSigElement { + fn from(data: SigElement) -> JsonSigElement { + JsonSigElement { + id: From::from(data.id), + start: data.start, + end: data.end, + } + } +} diff --git a/src/librustc_save_analysis/json_dumper.rs b/src/librustc_save_analysis/json_dumper.rs index 795ba1fe0fb..818190ca7d2 100644 --- a/src/librustc_save_analysis/json_dumper.rs +++ b/src/librustc_save_analysis/json_dumper.rs @@ -14,7 +14,7 @@ use rustc::hir::def_id::DefId; use rustc_serialize::json::as_json; use external_data::*; -use data::VariableKind; +use data::{VariableKind, SigElement}; use dump::Dump; use super::Format; @@ -224,7 +224,7 @@ struct Def { children: Vec<Id>, decl_id: Option<Id>, docs: String, - sig: Option<Signature>, + sig: Option<JsonSignature>, } #[derive(Debug, RustcEncodable)] @@ -315,7 +315,7 @@ impl From<StructData> for Def { children: data.fields.into_iter().map(|id| From::from(id)).collect(), decl_id: None, docs: data.docs, - sig: Some(data.sig), + sig: Some(From::from(data.sig)), } } } @@ -379,7 +379,7 @@ impl From<MacroData> for Def { children: vec![], decl_id: None, docs: data.docs, - sig: data.sig, + sig: data.sig.map(|s| From::from(s)), } } } @@ -507,3 +507,43 @@ impl From<MacroUseData> for MacroRef { } } } + +#[derive(Debug, RustcEncodable)] +pub struct JsonSignature { + span: SpanData, + text: String, + ident_start: usize, + ident_end: usize, + defs: Vec<JsonSigElement>, + refs: Vec<JsonSigElement>, +} + +impl From<Signature> for JsonSignature { + fn from(data: Signature) -> JsonSignature { + JsonSignature { + span: data.span, + text: data.text, + ident_start: data.ident_start, + ident_end: data.ident_end, + defs: data.defs.into_iter().map(|s| From::from(s)).collect(), + refs: data.refs.into_iter().map(|s| From::from(s)).collect(), + } + } +} + +#[derive(Debug, RustcEncodable)] +pub struct JsonSigElement { + id: Id, + start: usize, + end: usize, +} + +impl From<SigElement> for JsonSigElement { + fn from(data: SigElement) -> JsonSigElement { + JsonSigElement { + id: From::from(data.id), + start: data.start, + end: data.end, + } + } +} |
