Skip to content

Commit 88ed1a3

Browse files
committed
---
yaml --- r: 232427 b: refs/heads/try c: 6634777 h: refs/heads/master i: 232425: a37e6df 232423: 281ab9a v: v3
1 parent 680df99 commit 88ed1a3

File tree

16 files changed

+1015
-791
lines changed

16 files changed

+1015
-791
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: edeb4f1c86cbf6af8ef9874d4b3af50f721ea1b8
33
refs/heads/snap-stage3: 1af31d4974e33027a68126fa5a5a3c2c6491824f
4-
refs/heads/try: fc7efab3ab48e119e1a59281c26e666634ad1224
4+
refs/heads/try: 6634777ae0a89a535d7b43cd95c227724818a260
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/src/librustc/ast_map/mod.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ pub use self::Node::*;
1212
pub use self::PathElem::*;
1313
use self::MapEntry::*;
1414

15-
use metadata::inline::InlinedItem;
16-
use metadata::inline::InlinedItem as II;
1715
use syntax::abi;
1816
use syntax::ast::*;
1917
use syntax::ast_util;
@@ -376,8 +374,8 @@ impl<'ast> Map<'ast> {
376374
pub fn get_parent_did(&self, id: NodeId) -> DefId {
377375
let parent = self.get_parent(id);
378376
match self.find_entry(parent) {
379-
Some(RootInlinedParent(&InlinedParent {ii: II::TraitItem(did, _), ..})) => did,
380-
Some(RootInlinedParent(&InlinedParent {ii: II::ImplItem(did, _), ..})) => did,
377+
Some(RootInlinedParent(&InlinedParent {ii: IITraitItem(did, _), ..})) => did,
378+
Some(RootInlinedParent(&InlinedParent {ii: IIImplItem(did, _), ..})) => did,
381379
_ => ast_util::local_def(parent)
382380
}
383381
}
@@ -969,16 +967,16 @@ pub fn map_decoded_item<'ast, F: FoldOps>(map: &Map<'ast>,
969967
-> &'ast InlinedItem {
970968
let mut fld = IdAndSpanUpdater { fold_ops: fold_ops };
971969
let ii = match ii {
972-
II::Item(i) => II::Item(fld.fold_item(i).expect_one("expected one item")),
973-
II::TraitItem(d, ti) => {
974-
II::TraitItem(fld.fold_ops.new_def_id(d),
975-
fld.fold_trait_item(ti).expect_one("expected one trait item"))
970+
IIItem(i) => IIItem(fld.fold_item(i).expect_one("expected one item")),
971+
IITraitItem(d, ti) => {
972+
IITraitItem(fld.fold_ops.new_def_id(d),
973+
fld.fold_trait_item(ti).expect_one("expected one trait item"))
976974
}
977-
II::ImplItem(d, ii) => {
978-
II::ImplItem(fld.fold_ops.new_def_id(d),
979-
fld.fold_impl_item(ii).expect_one("expected one impl item"))
975+
IIImplItem(d, ii) => {
976+
IIImplItem(fld.fold_ops.new_def_id(d),
977+
fld.fold_impl_item(ii).expect_one("expected one impl item"))
980978
}
981-
II::Foreign(i) => II::Foreign(fld.fold_foreign_item(i))
979+
IIForeign(i) => IIForeign(fld.fold_foreign_item(i))
982980
};
983981

984982
let ii_parent = map.forest.inlined_items.alloc(InlinedParent {
@@ -992,20 +990,20 @@ pub fn map_decoded_item<'ast, F: FoldOps>(map: &Map<'ast>,
992990
parent_node: ii_parent_id,
993991
};
994992
collector.insert_entry(ii_parent_id, RootInlinedParent(ii_parent));
995-
ii_parent.ii.visit(&mut collector);
993+
visit::walk_inlined_item(&mut collector, &ii_parent.ii);
996994

997995
// Methods get added to the AST map when their impl is visited. Since we
998996
// don't decode and instantiate the impl, but just the method, we have to
999997
// add it to the table now. Likewise with foreign items.
1000998
match ii_parent.ii {
1001-
II::Item(_) => {}
1002-
II::TraitItem(_, ref ti) => {
999+
IIItem(_) => {}
1000+
IITraitItem(_, ref ti) => {
10031001
collector.insert(ti.id, NodeTraitItem(ti));
10041002
}
1005-
II::ImplItem(_, ref ii) => {
1003+
IIImplItem(_, ref ii) => {
10061004
collector.insert(ii.id, NodeImplItem(ii));
10071005
}
1008-
II::Foreign(ref i) => {
1006+
IIForeign(ref i) => {
10091007
collector.insert(i.id, NodeForeignItem(i));
10101008
}
10111009
}

branches/try/src/librustc/metadata/csearch.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use ast_map;
1414
use metadata::common::*;
1515
use metadata::cstore;
1616
use metadata::decoder;
17-
use metadata::inline::InlinedItem;
1817
use middle::lang_items;
1918
use middle::ty;
2019

@@ -97,8 +96,8 @@ pub fn get_item_path(tcx: &ty::ctxt, def: ast::DefId) -> Vec<ast_map::PathElem>
9796
}
9897

9998
pub enum FoundAst<'ast> {
100-
Found(&'ast InlinedItem),
101-
FoundParent(ast::DefId, &'ast InlinedItem),
99+
Found(&'ast ast::InlinedItem),
100+
FoundParent(ast::DefId, &'ast ast::InlinedItem),
102101
NotFound,
103102
}
104103

branches/try/src/librustc/metadata/decoder.rs

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ use metadata::csearch::MethodInfo;
2323
use metadata::csearch;
2424
use metadata::cstore;
2525
use metadata::encoder::def_to_u64;
26-
use metadata::inline::InlinedItem;
27-
use metadata::tydecode::TyDecoder;
26+
use metadata::tydecode::{parse_ty_data, parse_region_data,
27+
parse_type_param_def_data, parse_bare_fn_ty_data,
28+
parse_trait_ref_data, parse_predicate_data};
2829
use middle::def;
2930
use middle::lang_items;
3031
use middle::subst;
@@ -233,25 +234,22 @@ fn variant_disr_val(d: rbml::Doc) -> Option<ty::Disr> {
233234

234235
fn doc_type<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd) -> Ty<'tcx> {
235236
let tp = reader::get_doc(doc, tag_items_data_item_type);
236-
TyDecoder::with_doc(tcx, cdata.cnum, tp,
237-
&mut |_, did| translate_def_id(cdata, did))
238-
.parse_ty()
237+
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
238+
|_, did| translate_def_id(cdata, did))
239239
}
240240

241241
fn maybe_doc_type<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd) -> Option<Ty<'tcx>> {
242242
reader::maybe_get_doc(doc, tag_items_data_item_type).map(|tp| {
243-
TyDecoder::with_doc(tcx, cdata.cnum, tp,
244-
&mut |_, did| translate_def_id(cdata, did))
245-
.parse_ty()
243+
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
244+
|_, did| translate_def_id(cdata, did))
246245
})
247246
}
248247

249248
fn doc_method_fty<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>,
250249
cdata: Cmd) -> ty::BareFnTy<'tcx> {
251250
let tp = reader::get_doc(doc, tag_item_method_fty);
252-
TyDecoder::with_doc(tcx, cdata.cnum, tp,
253-
&mut |_, did| translate_def_id(cdata, did))
254-
.parse_bare_fn_ty()
251+
parse_bare_fn_ty_data(tp.data, cdata.cnum, tp.start, tcx,
252+
|_, did| translate_def_id(cdata, did))
255253
}
256254

257255
pub fn item_type<'tcx>(_item_id: ast::DefId, item: rbml::Doc,
@@ -261,9 +259,8 @@ pub fn item_type<'tcx>(_item_id: ast::DefId, item: rbml::Doc,
261259

262260
fn doc_trait_ref<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd)
263261
-> ty::TraitRef<'tcx> {
264-
TyDecoder::with_doc(tcx, cdata.cnum, doc,
265-
&mut |_, did| translate_def_id(cdata, did))
266-
.parse_trait_ref()
262+
parse_trait_ref_data(doc.data, cdata.cnum, doc.start, tcx,
263+
|_, did| translate_def_id(cdata, did))
267264
}
268265

269266
fn item_trait_ref<'tcx>(doc: rbml::Doc, tcx: &ty::ctxt<'tcx>, cdata: Cmd)
@@ -779,7 +776,7 @@ pub type DecodeInlinedItem<'a> =
779776
&ty::ctxt<'tcx>,
780777
Vec<ast_map::PathElem>,
781778
rbml::Doc)
782-
-> Result<&'tcx InlinedItem, Vec<ast_map::PathElem>> + 'a>;
779+
-> Result<&'tcx ast::InlinedItem, Vec<ast_map::PathElem>> + 'a>;
783780

784781
pub fn maybe_get_item_ast<'tcx>(cdata: Cmd, tcx: &ty::ctxt<'tcx>, id: ast::NodeId,
785782
mut decode_inlined_item: DecodeInlinedItem)
@@ -1471,10 +1468,9 @@ fn doc_generics<'tcx>(base_doc: rbml::Doc,
14711468

14721469
let mut types = subst::VecPerParamSpace::empty();
14731470
for p in reader::tagged_docs(doc, tag_type_param_def) {
1474-
let bd =
1475-
TyDecoder::with_doc(tcx, cdata.cnum, p,
1476-
&mut |_, did| translate_def_id(cdata, did))
1477-
.parse_type_param_def();
1471+
let bd = parse_type_param_def_data(
1472+
p.data, p.start, cdata.cnum, tcx,
1473+
|_, did| translate_def_id(cdata, did));
14781474
types.push(bd.space, bd);
14791475
}
14801476

@@ -1494,9 +1490,8 @@ fn doc_generics<'tcx>(base_doc: rbml::Doc,
14941490
let index = reader::doc_as_u64(doc) as u32;
14951491

14961492
let bounds = reader::tagged_docs(rp_doc, tag_items_data_region).map(|p| {
1497-
TyDecoder::with_doc(tcx, cdata.cnum, p,
1498-
&mut |_, did| translate_def_id(cdata, did))
1499-
.parse_region()
1493+
parse_region_data(p.data, cdata.cnum, p.start, tcx,
1494+
|_, did| translate_def_id(cdata, did))
15001495
}).collect();
15011496

15021497
regions.push(space, ty::RegionParameterDef { name: name,
@@ -1523,10 +1518,8 @@ fn doc_predicates<'tcx>(base_doc: rbml::Doc,
15231518
let space = subst::ParamSpace::from_uint(reader::doc_as_u8(space_doc) as usize);
15241519

15251520
let data_doc = reader::get_doc(predicate_doc, tag_predicate_data);
1526-
let data =
1527-
TyDecoder::with_doc(tcx, cdata.cnum, data_doc,
1528-
&mut |_, did| translate_def_id(cdata, did))
1529-
.parse_predicate();
1521+
let data = parse_predicate_data(data_doc.data, data_doc.start, cdata.cnum, tcx,
1522+
|_, did| translate_def_id(cdata, did));
15301523

15311524
predicates.push(space, data);
15321525
}

branches/try/src/librustc/metadata/encoder.rs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313
#![allow(unused_must_use)] // everything is just a MemWriter, can't fail
1414
#![allow(non_camel_case_types)]
1515

16+
pub use self::InlinedItemRef::*;
17+
1618
use ast_map::{self, LinkedPath, PathElem, PathElems};
1719
use back::svh::Svh;
1820
use session::config;
1921
use metadata::common::*;
2022
use metadata::cstore;
2123
use metadata::decoder;
2224
use metadata::tyencode;
23-
use metadata::inline::InlinedItemRef;
2425
use middle::def;
2526
use middle::dependency_format::Linkage;
2627
use middle::stability;
@@ -47,6 +48,14 @@ use syntax::visit;
4748
use syntax;
4849
use rbml::writer::Encoder;
4950

51+
/// A borrowed version of `ast::InlinedItem`.
52+
pub enum InlinedItemRef<'a> {
53+
IIItemRef(&'a ast::Item),
54+
IITraitItemRef(DefId, &'a ast::TraitItem),
55+
IIImplItemRef(DefId, &'a ast::ImplItem),
56+
IIForeignRef(&'a ast::ForeignItem)
57+
}
58+
5059
pub type EncodeInlinedItem<'a> =
5160
Box<FnMut(&EncodeContext, &mut Encoder, InlinedItemRef) + 'a>;
5261

@@ -823,7 +832,7 @@ fn encode_info_for_associated_const(ecx: &EncodeContext,
823832

824833
if let Some(ii) = impl_item_opt {
825834
encode_attributes(rbml_w, &ii.attrs);
826-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::ImplItem(local_def(parent_id), ii));
835+
encode_inlined_item(ecx, rbml_w, IIImplItemRef(local_def(parent_id), ii));
827836
}
828837

829838
rbml_w.end_tag();
@@ -861,7 +870,7 @@ fn encode_info_for_method<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
861870
let needs_inline = any_types || is_default_impl ||
862871
attr::requests_inline(&impl_item.attrs);
863872
if needs_inline || sig.constness == ast::Constness::Const {
864-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::ImplItem(local_def(parent_id),
873+
encode_inlined_item(ecx, rbml_w, IIImplItemRef(local_def(parent_id),
865874
impl_item));
866875
}
867876
encode_constness(rbml_w, sig.constness);
@@ -1043,7 +1052,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
10431052
encode_name(rbml_w, item.ident.name);
10441053
encode_path(rbml_w, path);
10451054
encode_attributes(rbml_w, &item.attrs);
1046-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::Item(item));
1055+
encode_inlined_item(ecx, rbml_w, IIItemRef(item));
10471056
encode_visibility(rbml_w, vis);
10481057
encode_stability(rbml_w, stab);
10491058
rbml_w.end_tag();
@@ -1060,7 +1069,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
10601069
encode_attributes(rbml_w, &item.attrs);
10611070
let needs_inline = tps_len > 0 || attr::requests_inline(&item.attrs);
10621071
if needs_inline || constness == ast::Constness::Const {
1063-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::Item(item));
1072+
encode_inlined_item(ecx, rbml_w, IIItemRef(item));
10641073
}
10651074
if tps_len == 0 {
10661075
encode_symbol(ecx, rbml_w, item.id);
@@ -1125,7 +1134,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
11251134
for v in &enum_definition.variants {
11261135
encode_variant_id(rbml_w, local_def(v.node.id));
11271136
}
1128-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::Item(item));
1137+
encode_inlined_item(ecx, rbml_w, IIItemRef(item));
11291138
encode_path(rbml_w, path);
11301139

11311140
// Encode inherent implementations for this enumeration.
@@ -1173,7 +1182,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
11731182
needs to know*/
11741183
encode_struct_fields(rbml_w, variant, def_id);
11751184

1176-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::Item(item));
1185+
encode_inlined_item(ecx, rbml_w, IIItemRef(item));
11771186

11781187
// Encode inherent implementations for this structure.
11791188
encode_inherent_implementations(ecx, rbml_w, def_id);
@@ -1448,7 +1457,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
14481457
match trait_item.node {
14491458
ast::ConstTraitItem(_, _) => {
14501459
encode_inlined_item(ecx, rbml_w,
1451-
InlinedItemRef::TraitItem(def_id, trait_item));
1460+
IITraitItemRef(def_id, trait_item));
14521461
}
14531462
ast::MethodTraitItem(ref sig, ref body) => {
14541463
// If this is a static method, we've already
@@ -1462,8 +1471,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
14621471

14631472
if body.is_some() {
14641473
encode_item_sort(rbml_w, 'p');
1465-
encode_inlined_item(ecx, rbml_w,
1466-
InlinedItemRef::TraitItem(def_id, trait_item));
1474+
encode_inlined_item(ecx, rbml_w, IITraitItemRef(def_id, trait_item));
14671475
} else {
14681476
encode_item_sort(rbml_w, 'r');
14691477
}
@@ -1502,7 +1510,7 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
15021510
encode_bounds_and_type_for_item(rbml_w, ecx, nitem.id);
15031511
encode_name(rbml_w, nitem.ident.name);
15041512
if abi == abi::RustIntrinsic {
1505-
encode_inlined_item(ecx, rbml_w, InlinedItemRef::Foreign(nitem));
1513+
encode_inlined_item(ecx, rbml_w, IIForeignRef(nitem));
15061514
}
15071515
encode_attributes(rbml_w, &*nitem.attrs);
15081516
let stab = stability::lookup(ecx.tcx, ast_util::local_def(nitem.id));

branches/try/src/librustc/metadata/inline.rs

Lines changed: 0 additions & 64 deletions
This file was deleted.

branches/try/src/librustc/metadata/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ pub mod csearch;
1919
pub mod loader;
2020
pub mod filesearch;
2121
pub mod macro_import;
22-
pub mod inline;

0 commit comments

Comments
 (0)