From: Nick Cameron Date: Mon, 21 Nov 2016 21:05:25 +0000 (+1300) Subject: further lowering of signature data X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=e9ecd8805dadbac76173e5207c18b42374e0aba1;p=rust.git further lowering of signature data --- 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_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, decl_id: Option, docs: String, - sig: Option, + sig: Option, } #[derive(Debug, RustcEncodable)] @@ -277,7 +277,7 @@ fn from(data: StructData) -> Option { 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 @@ fn from(data: TypeDefData) -> Option { } } } + impl From for Option { fn from(data: VariableData) -> Option { match data.visibility { @@ -419,9 +420,49 @@ fn from(data: VariableData) -> Option { 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, + refs: Vec, +} + +impl From 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 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_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, decl_id: Option, docs: String, - sig: Option, + sig: Option, } #[derive(Debug, RustcEncodable)] @@ -315,7 +315,7 @@ fn from(data: StructData) -> 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 @@ fn from(data: MacroData) -> Def { children: vec![], decl_id: None, docs: data.docs, - sig: data.sig, + sig: data.sig.map(|s| From::from(s)), } } } @@ -507,3 +507,43 @@ fn from(data: MacroUseData) -> MacroRef { } } } + +#[derive(Debug, RustcEncodable)] +pub struct JsonSignature { + span: SpanData, + text: String, + ident_start: usize, + ident_end: usize, + defs: Vec, + refs: Vec, +} + +impl From 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 for JsonSigElement { + fn from(data: SigElement) -> JsonSigElement { + JsonSigElement { + id: From::from(data.id), + start: data.start, + end: data.end, + } + } +}