Skip to content

Commit 96798f5

Browse files
committed
tydecode: Accept a plain borrowed pointer to the data
1 parent 51e85f5 commit 96798f5

File tree

3 files changed

+18
-24
lines changed

3 files changed

+18
-24
lines changed

src/librustc/metadata/decoder.rs

+8-14
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,13 @@ fn variant_disr_val(d: ebml::Doc) -> Option<int> {
216216

217217
fn doc_type(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::t {
218218
let tp = reader::get_doc(doc, tag_items_data_item_type);
219-
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
219+
parse_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
220220
|_, did| translate_def_id(cdata, did))
221221
}
222222

223223
fn doc_method_fty(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::BareFnTy {
224224
let tp = reader::get_doc(doc, tag_item_method_fty);
225-
parse_bare_fn_ty_data(tp.data, cdata.cnum, tp.start, tcx,
225+
parse_bare_fn_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
226226
|_, did| translate_def_id(cdata, did))
227227
}
228228

@@ -231,7 +231,7 @@ fn doc_transformed_self_ty(doc: ebml::Doc,
231231
cdata: cmd) -> Option<ty::t>
232232
{
233233
do reader::maybe_get_doc(doc, tag_item_method_transformed_self_ty).map |tp| {
234-
parse_ty_data(tp.data, cdata.cnum, tp.start, tcx,
234+
parse_ty_data(*tp.data, cdata.cnum, tp.start, tcx,
235235
|_, did| translate_def_id(cdata, did))
236236
}
237237
}
@@ -242,7 +242,7 @@ pub fn item_type(_item_id: ast::def_id, item: ebml::Doc,
242242
}
243243

244244
fn doc_trait_ref(doc: ebml::Doc, tcx: ty::ctxt, cdata: cmd) -> ty::TraitRef {
245-
parse_trait_ref_data(doc.data, cdata.cnum, doc.start, tcx,
245+
parse_trait_ref_data(*doc.data, cdata.cnum, doc.start, tcx,
246246
|_, did| translate_def_id(cdata, did))
247247
}
248248

@@ -257,7 +257,7 @@ fn item_ty_param_defs(item: ebml::Doc, tcx: ty::ctxt, cdata: cmd,
257257
let mut bounds = ~[];
258258
for reader::tagged_docs(item, tag) |p| {
259259
let bd = parse_type_param_def_data(
260-
p.data, p.start, cdata.cnum, tcx,
260+
*p.data, p.start, cdata.cnum, tcx,
261261
|_, did| translate_def_id(cdata, did));
262262
bounds.push(bd);
263263
}
@@ -413,15 +413,9 @@ pub fn get_impl_trait(cdata: cmd,
413413
tcx: ty::ctxt) -> Option<@ty::TraitRef>
414414
{
415415
let item_doc = lookup_item(id, cdata.data);
416-
let mut result = None;
417-
for reader::tagged_docs(item_doc, tag_item_trait_ref) |tp| {
418-
let trait_ref =
419-
@parse_trait_ref_data(tp.data, cdata.cnum, tp.start, tcx,
420-
|_, did| translate_def_id(cdata, did));
421-
result = Some(trait_ref);
422-
break;
423-
};
424-
result
416+
do reader::maybe_get_doc(item_doc, tag_item_trait_ref).map |&tp| {
417+
@doc_trait_ref(tp, tcx, cdata)
418+
}
425419
}
426420

427421
pub fn get_impl_method(intr: @ident_interner, cdata: cmd, id: ast::node_id,

src/librustc/metadata/tydecode.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ pub enum DefIdSource {
5555
type conv_did<'self> =
5656
&'self fn(source: DefIdSource, ast::def_id) -> ast::def_id;
5757

58-
pub struct PState {
59-
data: @~[u8],
58+
pub struct PState<'self> {
59+
data: &'self [u8],
6060
crate: int,
6161
pos: uint,
6262
tcx: ty::ctxt
@@ -103,8 +103,8 @@ fn parse_ident_(st: &mut PState, is_last: @fn(char) -> bool) ->
103103
return st.tcx.sess.ident_of(rslt);
104104
}
105105

106-
pub fn parse_state_from_data(data: @~[u8], crate_num: int,
107-
pos: uint, tcx: ty::ctxt) -> PState {
106+
pub fn parse_state_from_data<'a>(data: &'a [u8], crate_num: int,
107+
pos: uint, tcx: ty::ctxt) -> PState<'a> {
108108
PState {
109109
data: data,
110110
crate: crate_num,
@@ -113,19 +113,19 @@ pub fn parse_state_from_data(data: @~[u8], crate_num: int,
113113
}
114114
}
115115

116-
pub fn parse_ty_data(data: @~[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
116+
pub fn parse_ty_data(data: &[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
117117
conv: conv_did) -> ty::t {
118118
let mut st = parse_state_from_data(data, crate_num, pos, tcx);
119119
parse_ty(&mut st, conv)
120120
}
121121

122-
pub fn parse_bare_fn_ty_data(data: @~[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
122+
pub fn parse_bare_fn_ty_data(data: &[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
123123
conv: conv_did) -> ty::BareFnTy {
124124
let mut st = parse_state_from_data(data, crate_num, pos, tcx);
125125
parse_bare_fn_ty(&mut st, conv)
126126
}
127127

128-
pub fn parse_trait_ref_data(data: @~[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
128+
pub fn parse_trait_ref_data(data: &[u8], crate_num: int, pos: uint, tcx: ty::ctxt,
129129
conv: conv_did) -> ty::TraitRef {
130130
let mut st = parse_state_from_data(data, crate_num, pos, tcx);
131131
parse_trait_ref(&mut st, conv)
@@ -534,7 +534,7 @@ pub fn parse_def_id(buf: &[u8]) -> ast::def_id {
534534
ast::def_id { crate: crate_num, node: def_num }
535535
}
536536

537-
pub fn parse_type_param_def_data(data: @~[u8], start: uint,
537+
pub fn parse_type_param_def_data(data: &[u8], start: uint,
538538
crate_num: int, tcx: ty::ctxt,
539539
conv: conv_did) -> ty::TypeParameterDef
540540
{

src/librustc/middle/astencode.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ impl ebml_decoder_decoder_helpers for reader::Decoder {
964964

965965
return do self.read_opaque |this, doc| {
966966
let ty = tydecode::parse_ty_data(
967-
doc.data,
967+
*doc.data,
968968
xcx.dcx.cdata.cnum,
969969
doc.start,
970970
xcx.dcx.tcx,
@@ -994,7 +994,7 @@ impl ebml_decoder_decoder_helpers for reader::Decoder {
994994
-> ty::TypeParameterDef {
995995
do self.read_opaque |this, doc| {
996996
tydecode::parse_type_param_def_data(
997-
doc.data,
997+
*doc.data,
998998
doc.start,
999999
xcx.dcx.cdata.cnum,
10001000
xcx.dcx.tcx,

0 commit comments

Comments
 (0)