Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
8a64cf7
Fix suggestion span error with a line containing non-ASCIIs
sinkuu Feb 25, 2017
edf5dc6
Box docs: no allocation is done for ZSTs.
Mar 9, 2017
4eeede3
fix emscripten test detection
TimNN Mar 4, 2017
da6e7c8
Distinguish the ways `CStr::from_bytes_with_nul` can fail
tbu- Mar 9, 2017
57c989c
Fix botched member variable rename
shepmaster Mar 4, 2017
3e2390f
Restore creating the channel-rust-$channel-date.txt files
shepmaster Mar 3, 2017
58ff4f6
rustbuild: expose LLVM_PARALLEL_LINK_JOBS
Mar 5, 2017
8062cfb
Implement placement-in protocol for and `VecDeque`
Mar 9, 2017
4078b25
Clean up rustdoc css
GuillaumeGomez Mar 9, 2017
a8cacd3
travis: Attempt to debug sccache failures
alexcrichton Mar 7, 2017
ac2bc7c
Point to enclosing block/fn on nested unsafe
estebank Jan 20, 2017
a07c9a2
Export attributes in save-analysis data
jonasbb Feb 14, 2017
203d227
Store attributes as strings
jonasbb Feb 23, 2017
db35604
Move remove_docs_from_attrs into lowering step
jonasbb Mar 2, 2017
4ca9c97
Remove ability for plugins to register a MIR pass
nagisa Mar 3, 2017
0a55c8e
Support armhf abi on 64-bit ARM cpus
infinity0 Mar 6, 2017
7b0dd7b
Fix incorrect span label formatting
estebank Mar 6, 2017
5afe784
Expect macro defs in save-analysis and add expn info to spans for att…
Mar 7, 2017
5c8aa74
rustc: Exit quickly on only `--emit dep-info`
alexcrichton Mar 7, 2017
9a84611
travis: Fuchsia builder
petrhosek Feb 17, 2017
83814fd
OsString::shrink_to_fit.
Mar 10, 2017
384ee48
Clarify docs in `VecDeque::resize`
DirkyJerky Mar 10, 2017
dcfc7ee
travis: Remove compiling OpenSSL through homebrew
alexcrichton Mar 10, 2017
c65996e
Don't put Cargo into the rustc workspace
alexcrichton Mar 6, 2017
d335c0a
Rollup merge of #39202 - estebank:nested-unsafe, r=jonathandturner
alexcrichton Mar 10, 2017
3b7a534
Rollup merge of #39820 - jonasbb:export-attributes, r=nrc
alexcrichton Mar 10, 2017
b92073d
Rollup merge of #39918 - petrhosek:fuchsia-ci, r=alexcrichton
alexcrichton Mar 10, 2017
da994cd
Rollup merge of #40092 - sinkuu:fix_suggestion_index, r=pnkfelix
alexcrichton Mar 10, 2017
37265d8
Rollup merge of #40225 - shepmaster:restore-build-date-file, r=alexcr…
alexcrichton Mar 10, 2017
5377eab
Rollup merge of #40239 - nagisa:death-to-plugins, r=nikomatsakis
alexcrichton Mar 10, 2017
5c715de
Rollup merge of #40259 - TimNN:fix-emscripten-tests, r=alexcrichton
alexcrichton Mar 10, 2017
0ce745b
Rollup merge of #40261 - infinity0:patch-1, r=alexcrichton
alexcrichton Mar 10, 2017
416889f
Rollup merge of #40277 - rkruppe:llvm-parallel-link-jobs, r=alexcrichton
alexcrichton Mar 10, 2017
dcc24b1
Rollup merge of #40278 - GuillaumeGomez:css-cleanup, r=frewsxcv
alexcrichton Mar 10, 2017
c253eb2
Rollup merge of #40287 - estebank:label-overlap, r=nrc
alexcrichton Mar 10, 2017
ac1bbf7
Rollup merge of #40297 - alexcrichton:fix-submodules, r=brson
alexcrichton Mar 10, 2017
755877d
Rollup merge of #40311 - nrc:save-proc-macro-attr, r=jseyfried
alexcrichton Mar 10, 2017
c1c3b09
Rollup merge of #40324 - alexcrichton:sccache-errors, r=aturon
alexcrichton Mar 10, 2017
2b1d1bb
Rollup merge of #40336 - alexcrichton:fast-dep-info, r=nrc
alexcrichton Mar 10, 2017
8f02dc2
Rollup merge of #40379 - clarcharr:box_docs, r=brson
alexcrichton Mar 10, 2017
d0da85d
Rollup merge of #40386 - tbu-:pr_display_frombyteswithnulerror, r=ale…
alexcrichton Mar 10, 2017
dcf4182
Rollup merge of #40389 - F001:placementVecDeque, r=nagisa
alexcrichton Mar 10, 2017
f4b4e09
Rollup merge of #40410 - clarcharr:os_string_shrink_to_fit, r=alexcri…
alexcrichton Mar 10, 2017
b32393c
Rollup merge of #40423 - DirkyJerky:patch-2, r=BurntSushi
alexcrichton Mar 10, 2017
d03b6b3
Rollup merge of #40424 - alexcrichton:faster-travis-osx, r=brson
alexcrichton Mar 10, 2017
3493d91
Test fixes and rebase conflicts
alexcrichton Mar 11, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/librustc_save_analysis/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

use rustc::hir;
use rustc::hir::def_id::{CrateNum, DefId};
use syntax::ast::{self, NodeId};
use syntax::ast::{self, Attribute, NodeId};
use syntax_pos::Span;

pub struct CrateData {
Expand Down Expand Up @@ -136,6 +136,7 @@ pub struct EnumData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

/// Data for extern crates.
Expand Down Expand Up @@ -171,6 +172,7 @@ pub struct FunctionData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

/// Data about a function call.
Expand Down Expand Up @@ -256,6 +258,7 @@ pub struct MethodData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

/// Data for modules.
Expand All @@ -271,6 +274,7 @@ pub struct ModData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

/// Data for a reference to a module.
Expand All @@ -295,6 +299,7 @@ pub struct StructData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

#[derive(Debug, RustcEncodable)]
Expand All @@ -309,6 +314,7 @@ pub struct StructVariantData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

#[derive(Debug, RustcEncodable)]
Expand All @@ -323,6 +329,7 @@ pub struct TraitData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

#[derive(Debug, RustcEncodable)]
Expand All @@ -337,6 +344,7 @@ pub struct TupleVariantData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

/// Data for a typedef.
Expand All @@ -351,6 +359,7 @@ pub struct TypeDefData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Option<Signature>,
pub attributes: Vec<Attribute>,
}

/// Data for a reference to a type or trait.
Expand Down Expand Up @@ -396,6 +405,7 @@ pub struct VariableData {
pub visibility: Visibility,
pub docs: String,
pub sig: Option<Signature>,
pub attributes: Vec<Attribute>,
}

#[derive(Debug, RustcEncodable)]
Expand Down
11 changes: 11 additions & 0 deletions src/librustc_save_analysis/dump_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: Visibility::Inherited,
docs: String::new(),
sig: None,
attributes: vec![],
}.lower(self.tcx));
}
}
Expand Down Expand Up @@ -448,6 +449,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: vis,
docs: docs_for_attrs(attrs),
sig: method_data.sig,
attributes: attrs.to_vec(),
}.lower(self.tcx));
}

Expand Down Expand Up @@ -519,6 +521,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
parent: None,
docs: String::new(),
sig: None,
attributes: vec![],
}.lower(self.tcx));
}
}
Expand Down Expand Up @@ -592,6 +595,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: vis,
docs: docs_for_attrs(attrs),
sig: None,
attributes: attrs.to_vec(),
}.lower(self.tcx));
}

Expand Down Expand Up @@ -636,6 +640,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: From::from(&item.vis),
docs: docs_for_attrs(&item.attrs),
sig: self.save_ctxt.sig_base(item),
attributes: item.attrs.clone(),
}.lower(self.tcx));
}

Expand Down Expand Up @@ -701,6 +706,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
parent: Some(make_def_id(item.id, &self.tcx.hir)),
docs: docs_for_attrs(&variant.node.attrs),
sig: sig,
attributes: variant.node.attrs.clone(),
}.lower(self.tcx));
}
}
Expand All @@ -727,6 +733,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
parent: Some(make_def_id(item.id, &self.tcx.hir)),
docs: docs_for_attrs(&variant.node.attrs),
sig: sig,
attributes: variant.node.attrs.clone(),
}.lower(self.tcx));
}
}
Expand Down Expand Up @@ -798,6 +805,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: From::from(&item.vis),
docs: docs_for_attrs(&item.attrs),
sig: self.save_ctxt.sig_base(item),
attributes: item.attrs.clone(),
}.lower(self.tcx));
}

Expand Down Expand Up @@ -1064,6 +1072,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump + 'll> DumpVisitor<'l, 'tcx, 'll, D> {
visibility: Visibility::Inherited,
docs: String::new(),
sig: None,
attributes: vec![],
}.lower(self.tcx));
}
}
Expand Down Expand Up @@ -1305,6 +1314,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll,
parent: None,
docs: docs_for_attrs(&item.attrs),
sig: Some(self.save_ctxt.sig_base(item)),
attributes: item.attrs.clone(),
}.lower(self.tcx));
}

Expand Down Expand Up @@ -1527,6 +1537,7 @@ impl<'l, 'tcx: 'l, 'll, D: Dump +'ll> Visitor<'l> for DumpVisitor<'l, 'tcx, 'll,
visibility: Visibility::Inherited,
docs: String::new(),
sig: None,
attributes: vec![],
}.lower(self.tcx));
}
}
Expand Down
57 changes: 56 additions & 1 deletion src/librustc_save_analysis/external_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
use rustc::hir::def_id::{CrateNum, DefId, DefIndex};
use rustc::hir::map::Map;
use rustc::ty::TyCtxt;
use syntax::ast::NodeId;
use syntax::ast::{self, NodeId};
use syntax::codemap::CodeMap;
use syntax::print::pprust;
use syntax::symbol::Symbol;
use syntax_pos::Span;

use data::{self, Visibility, SigElement};
Expand Down Expand Up @@ -64,6 +66,39 @@ impl SpanData {
}
}

/// Represent an arbitrary attribute on a code element
#[derive(Clone, Debug, RustcEncodable)]
pub struct Attribute {
value: String,
span: SpanData,
}

impl Lower for Vec<ast::Attribute> {
type Target = Vec<Attribute>;

fn lower(self, tcx: TyCtxt) -> Vec<Attribute> {
let doc = Symbol::intern("doc");
self.into_iter()
// Only retain real attributes. Doc comments are lowered separately.
.filter(|attr| attr.name() != doc)
.map(|mut attr| {
// Remove the surrounding '#[..]' or '#![..]' of the pretty printed
// attribute. First normalize all inner attribute (#![..]) to outer
// ones (#[..]), then remove the two leading and the one trailing character.
attr.style = ast::AttrStyle::Outer;
let value = pprust::attribute_to_string(&attr);
// This str slicing works correctly, because the leading and trailing characters
// are in the ASCII range and thus exactly one byte each.
let value = value[2..value.len()-1].to_string();

Attribute {
value: value,
span: SpanData::from_span(attr.span, tcx.sess.codemap()),
}
}).collect()
}
}

#[derive(Debug, RustcEncodable)]
pub struct CratePreludeData {
pub crate_name: String,
Expand Down Expand Up @@ -98,6 +133,7 @@ pub struct EnumData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::EnumData {
Expand All @@ -115,6 +151,7 @@ impl Lower for data::EnumData {
visibility: self.visibility,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand Down Expand Up @@ -179,6 +216,7 @@ pub struct FunctionData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::FunctionData {
Expand All @@ -197,6 +235,7 @@ impl Lower for data::FunctionData {
parent: self.parent,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand Down Expand Up @@ -346,6 +385,7 @@ pub struct MethodData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::MethodData {
Expand All @@ -364,6 +404,7 @@ impl Lower for data::MethodData {
parent: self.parent,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand All @@ -381,6 +422,7 @@ pub struct ModData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::ModData {
Expand All @@ -398,6 +440,7 @@ impl Lower for data::ModData {
visibility: self.visibility,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand Down Expand Up @@ -437,6 +480,7 @@ pub struct StructData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::StructData {
Expand All @@ -455,6 +499,7 @@ impl Lower for data::StructData {
visibility: self.visibility,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand All @@ -471,6 +516,7 @@ pub struct StructVariantData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::StructVariantData {
Expand All @@ -488,6 +534,7 @@ impl Lower for data::StructVariantData {
parent: self.parent,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand All @@ -504,6 +551,7 @@ pub struct TraitData {
pub visibility: Visibility,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::TraitData {
Expand All @@ -521,6 +569,7 @@ impl Lower for data::TraitData {
visibility: self.visibility,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand All @@ -537,6 +586,7 @@ pub struct TupleVariantData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Signature,
pub attributes: Vec<Attribute>,
}

impl Lower for data::TupleVariantData {
Expand All @@ -554,6 +604,7 @@ impl Lower for data::TupleVariantData {
parent: self.parent,
docs: self.docs,
sig: self.sig.lower(tcx),
attributes: self.attributes.lower(tcx),
}
}
}
Expand All @@ -570,6 +621,7 @@ pub struct TypeDefData {
pub parent: Option<DefId>,
pub docs: String,
pub sig: Option<Signature>,
pub attributes: Vec<Attribute>,
}

impl Lower for data::TypeDefData {
Expand All @@ -586,6 +638,7 @@ impl Lower for data::TypeDefData {
parent: self.parent,
docs: self.docs,
sig: self.sig.map(|s| s.lower(tcx)),
attributes: self.attributes.lower(tcx),
}
}
}
Expand Down Expand Up @@ -675,6 +728,7 @@ pub struct VariableData {
pub visibility: Visibility,
pub docs: String,
pub sig: Option<Signature>,
pub attributes: Vec<Attribute>,
}

impl Lower for data::VariableData {
Expand All @@ -694,6 +748,7 @@ impl Lower for data::VariableData {
visibility: self.visibility,
docs: self.docs,
sig: self.sig.map(|s| s.lower(tcx)),
attributes: self.attributes.lower(tcx),
}
}
}
Expand Down
Loading