@@ -162,19 +162,18 @@ fn item_visibility(item: ebml::Doc) -> ast::visibility {
162
162
163
163
fn item_method_sort ( item : ebml:: Doc ) -> char {
164
164
for reader:: tagged_docs( item, tag_item_trait_method_sort) |doc| {
165
- return str :: from_bytes ( reader :: doc_data ( doc) ) [ 0 ] as char;
165
+ return doc. as_str_slice ( ) [ 0 ] as char ;
166
166
}
167
167
return 'r' ;
168
168
}
169
169
170
170
fn item_symbol ( item : ebml:: Doc ) -> ~str {
171
- let sym = reader:: get_doc ( item, tag_items_data_item_symbol) ;
172
- return str:: from_bytes ( reader:: doc_data ( sym) ) ;
171
+ reader:: get_doc ( item, tag_items_data_item_symbol) . as_str ( )
173
172
}
174
173
175
174
fn item_parent_item ( d : ebml:: Doc ) -> Option < ast:: def_id > {
176
175
for reader:: tagged_docs( d, tag_items_data_parent_item) |did| {
177
- return Some ( reader:: with_doc_data( did, |d| parse_def_id( d ) ) ) ;
176
+ return Some ( reader:: with_doc_data( did, parse_def_id) ) ;
178
177
}
179
178
None
180
179
}
@@ -195,8 +194,7 @@ fn item_reqd_and_translated_parent_item(cnum: ast::crate_num,
195
194
196
195
fn item_def_id ( d : ebml:: Doc , cdata : cmd ) -> ast:: def_id {
197
196
let tagdoc = reader:: get_doc ( d, tag_def_id) ;
198
- return translate_def_id ( cdata, reader:: with_doc_data ( tagdoc,
199
- |d| parse_def_id ( d) ) ) ;
197
+ return translate_def_id ( cdata, reader:: with_doc_data ( tagdoc, parse_def_id) ) ;
200
198
}
201
199
202
200
fn each_reexport ( d : ebml:: Doc , f : & fn ( ebml:: Doc ) -> bool ) -> bool {
@@ -210,19 +208,19 @@ fn each_reexport(d: ebml::Doc, f: &fn(ebml::Doc) -> bool) -> bool {
210
208
211
209
fn variant_disr_val ( d : ebml:: Doc ) -> Option < int > {
212
210
do reader:: maybe_get_doc ( d, tag_disr_val) . chain |val_doc| {
213
- int :: parse_bytes ( reader:: doc_data ( val_doc) , 10 u)
211
+ do reader:: with_doc_data ( val_doc) |data| { int :: parse_bytes ( data , 10 u) }
214
212
}
215
213
}
216
214
217
215
fn doc_type ( doc : ebml:: Doc , tcx : ty:: ctxt , cdata : cmd ) -> ty:: t {
218
216
let tp = reader:: get_doc ( doc, tag_items_data_item_type) ;
219
- parse_ty_data ( tp. data , cdata. cnum , tp. start , tcx,
217
+ parse_ty_data ( * tp. data , cdata. cnum , tp. start , tcx,
220
218
|_, did| translate_def_id ( cdata, did) )
221
219
}
222
220
223
221
fn doc_method_fty ( doc : ebml:: Doc , tcx : ty:: ctxt , cdata : cmd ) -> ty:: BareFnTy {
224
222
let tp = reader:: get_doc ( doc, tag_item_method_fty) ;
225
- parse_bare_fn_ty_data ( tp. data , cdata. cnum , tp. start , tcx,
223
+ parse_bare_fn_ty_data ( * tp. data , cdata. cnum , tp. start , tcx,
226
224
|_, did| translate_def_id ( cdata, did) )
227
225
}
228
226
@@ -231,7 +229,7 @@ fn doc_transformed_self_ty(doc: ebml::Doc,
231
229
cdata : cmd ) -> Option < ty:: t >
232
230
{
233
231
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,
232
+ parse_ty_data ( * tp. data , cdata. cnum , tp. start , tcx,
235
233
|_, did| translate_def_id ( cdata, did) )
236
234
}
237
235
}
@@ -242,7 +240,7 @@ pub fn item_type(_item_id: ast::def_id, item: ebml::Doc,
242
240
}
243
241
244
242
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,
243
+ parse_trait_ref_data ( * doc. data , cdata. cnum , doc. start , tcx,
246
244
|_, did| translate_def_id ( cdata, did) )
247
245
}
248
246
@@ -257,7 +255,7 @@ fn item_ty_param_defs(item: ebml::Doc, tcx: ty::ctxt, cdata: cmd,
257
255
let mut bounds = ~[ ] ;
258
256
for reader:: tagged_docs( item, tag) |p| {
259
257
let bd = parse_type_param_def_data (
260
- p. data , p. start , cdata. cnum , tcx,
258
+ * p. data , p. start , cdata. cnum , tcx,
261
259
|_, did| translate_def_id ( cdata, did) ) ;
262
260
bounds. push ( bd) ;
263
261
}
@@ -282,7 +280,7 @@ fn enum_variant_ids(item: ebml::Doc, cdata: cmd) -> ~[ast::def_id] {
282
280
let mut ids: ~[ ast:: def_id ] = ~[ ] ;
283
281
let v = tag_items_data_item_variant;
284
282
for reader:: tagged_docs( item, v) |p| {
285
- let ext = reader:: with_doc_data ( p, |d| parse_def_id ( d ) ) ;
283
+ let ext = reader:: with_doc_data ( p, parse_def_id) ;
286
284
ids. push ( ast:: def_id { crate : cdata. cnum , node : ext. node } ) ;
287
285
} ;
288
286
return ids;
@@ -297,10 +295,10 @@ fn item_path(item_doc: ebml::Doc) -> ast_map::path {
297
295
let mut result = vec:: with_capacity ( len) ;
298
296
for reader:: docs( path_doc) |tag, elt_doc| {
299
297
if tag == tag_path_elt_mod {
300
- let str = reader :: doc_as_str ( elt_doc) ;
298
+ let str = elt_doc. as_str_slice ( ) ;
301
299
result. push ( ast_map:: path_mod ( token:: str_to_ident ( str) ) ) ;
302
300
} else if tag == tag_path_elt_name {
303
- let str = reader :: doc_as_str ( elt_doc) ;
301
+ let str = elt_doc. as_str_slice ( ) ;
304
302
result. push ( ast_map:: path_name ( token:: str_to_ident ( str) ) ) ;
305
303
} else {
306
304
// ignore tag_path_len element
@@ -312,12 +310,10 @@ fn item_path(item_doc: ebml::Doc) -> ast_map::path {
312
310
313
311
fn item_name ( intr : @ident_interner , item : ebml:: Doc ) -> ast:: ident {
314
312
let name = reader:: get_doc ( item, tag_paths_data_name) ;
315
- do reader:: with_doc_data ( name) |data| {
316
- let string = str:: from_bytes_slice ( data) ;
317
- match intr. find_equiv ( & StringRef ( string) ) {
318
- None => token:: str_to_ident ( string) ,
319
- Some ( val) => ast:: new_ident ( val) ,
320
- }
313
+ let string = name. as_str_slice ( ) ;
314
+ match intr. find_equiv ( & StringRef ( string) ) {
315
+ None => token:: str_to_ident ( string) ,
316
+ Some ( val) => ast:: new_ident ( val) ,
321
317
}
322
318
}
323
319
@@ -413,15 +409,9 @@ pub fn get_impl_trait(cdata: cmd,
413
409
tcx : ty:: ctxt ) -> Option < @ty:: TraitRef >
414
410
{
415
411
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
412
+ do reader:: maybe_get_doc ( item_doc, tag_item_trait_ref) . map |& tp| {
413
+ @doc_trait_ref ( tp, tcx, cdata)
414
+ }
425
415
}
426
416
427
417
pub fn get_impl_method ( intr : @ident_interner , cdata : cmd , id : ast:: node_id ,
@@ -430,7 +420,7 @@ pub fn get_impl_method(intr: @ident_interner, cdata: cmd, id: ast::node_id,
430
420
let mut found = None ;
431
421
for reader:: tagged_docs( find_item( id, items) , tag_item_impl_method)
432
422
|mid| {
433
- let m_did = reader:: with_doc_data ( mid, |d| parse_def_id ( d ) ) ;
423
+ let m_did = reader:: with_doc_data ( mid, parse_def_id) ;
434
424
if item_name ( intr, find_item ( m_did. node , items) ) == name {
435
425
found = Some ( translate_def_id ( cdata, m_did) ) ;
436
426
}
@@ -513,19 +503,17 @@ pub fn each_path(intr: @ident_interner,
513
503
let def_id_doc =
514
504
reader:: get_doc ( reexport_doc,
515
505
tag_items_data_item_reexport_def_id) ;
516
- let def_id =
517
- reader:: with_doc_data ( def_id_doc,
518
- |d| parse_def_id ( d) ) ;
506
+ let def_id = reader:: with_doc_data ( def_id_doc, parse_def_id) ;
519
507
let def_id = translate_def_id ( cdata, def_id) ;
520
508
521
509
let reexport_name_doc =
522
510
reader:: get_doc ( reexport_doc,
523
511
tag_items_data_item_reexport_name) ;
524
- let reexport_name = reader :: doc_as_str ( reexport_name_doc) ;
512
+ let reexport_name = reexport_name_doc. as_str_slice ( ) ;
525
513
526
514
let reexport_path;
527
515
if path_is_empty {
528
- reexport_path = reexport_name;
516
+ reexport_path = reexport_name. to_owned ( ) ;
529
517
} else {
530
518
reexport_path = path + "::" + reexport_name;
531
519
}
@@ -646,7 +634,7 @@ fn get_explicit_self(item: ebml::Doc) -> ast::explicit_self_ {
646
634
}
647
635
648
636
let explicit_self_doc = reader:: get_doc ( item, tag_item_trait_method_explicit_self) ;
649
- let string = reader :: doc_as_str ( explicit_self_doc) ;
637
+ let string = explicit_self_doc. as_str_slice ( ) ;
650
638
651
639
let explicit_self_kind = string[ 0 ] ;
652
640
match explicit_self_kind as char {
@@ -668,7 +656,7 @@ fn item_impl_methods(intr: @ident_interner, cdata: cmd, item: ebml::Doc,
668
656
base_tps : uint ) -> ~[ @resolve:: MethodInfo ] {
669
657
let mut rslt = ~[ ] ;
670
658
for reader:: tagged_docs( item, tag_item_impl_method) |doc| {
671
- let m_did = reader:: with_doc_data ( doc, |d| parse_def_id ( d ) ) ;
659
+ let m_did = reader:: with_doc_data ( doc, parse_def_id) ;
672
660
let mth_item = lookup_item ( m_did. node , cdata. data ) ;
673
661
let explicit_self = get_explicit_self ( mth_item) ;
674
662
rslt. push ( @resolve:: MethodInfo {
@@ -690,7 +678,7 @@ pub fn get_impls_for_mod(intr: @ident_interner,
690
678
let mod_item = lookup_item ( m_id, data) ;
691
679
let mut result = ~[ ] ;
692
680
for reader:: tagged_docs( mod_item, tag_mod_impl) |doc| {
693
- let did = reader:: with_doc_data ( doc, |d| parse_def_id ( d ) ) ;
681
+ let did = reader:: with_doc_data ( doc, parse_def_id) ;
694
682
let local_did = translate_def_id ( cdata, did) ;
695
683
debug ! ( "(get impls for mod) getting did %? for '%?'" ,
696
684
local_did, name) ;
@@ -831,7 +819,7 @@ pub fn get_type_name_if_impl(cdata: cmd,
831
819
}
832
820
833
821
for reader:: tagged_docs( item, tag_item_impl_type_basename) |doc| {
834
- return Some ( token:: str_to_ident( str :: from_bytes ( reader :: doc_data ( doc) ) ) ) ;
822
+ return Some ( token:: str_to_ident ( doc. as_str_slice ( ) ) ) ;
835
823
}
836
824
837
825
return None ;
@@ -853,7 +841,7 @@ pub fn get_static_methods_if_impl(intr: @ident_interner,
853
841
854
842
let mut impl_method_ids = ~[ ] ;
855
843
for reader:: tagged_docs( item, tag_item_impl_method) |impl_method_doc| {
856
- impl_method_ids. push ( parse_def_id ( reader:: doc_data ( impl_method_doc) ) ) ;
844
+ impl_method_ids. push ( reader:: with_doc_data ( impl_method_doc, parse_def_id ) ) ;
857
845
}
858
846
859
847
let mut static_impl_methods = ~[ ] ;
@@ -950,12 +938,13 @@ fn family_names_type(fam: Family) -> bool {
950
938
}
951
939
952
940
fn read_path ( d : ebml:: Doc ) -> ( ~str , uint ) {
953
- let desc = reader:: doc_data ( d) ;
954
- let pos = io:: u64_from_be_bytes ( desc, 0 u, 4 u) as uint ;
955
- let pathbytes = vec :: slice :: < u8 > ( desc , 4 u, vec :: len :: < u8 > ( desc ) ) ;
956
- let path = str:: from_bytes ( pathbytes) ;
941
+ do reader:: with_doc_data ( d) |desc| {
942
+ let pos = io:: u64_from_be_bytes ( desc, 0 u, 4 u) as uint ;
943
+ let pathbytes = desc . slice ( 4 u, desc . len ( ) ) ;
944
+ let path = str:: from_bytes ( pathbytes) ;
957
945
958
- ( path, pos)
946
+ ( path, pos)
947
+ }
959
948
}
960
949
961
950
fn describe_def ( items : ebml:: Doc , id : ast:: def_id ) -> ~str {
@@ -996,21 +985,21 @@ fn get_meta_items(md: ebml::Doc) -> ~[@ast::meta_item] {
996
985
let mut items: ~[ @ast:: meta_item ] = ~[ ] ;
997
986
for reader:: tagged_docs( md, tag_meta_item_word) |meta_item_doc| {
998
987
let nd = reader:: get_doc ( meta_item_doc, tag_meta_item_name) ;
999
- let n = str :: from_bytes ( reader :: doc_data ( nd ) ) ;
988
+ let n = nd . as_str ( ) ;
1000
989
items. push ( attr:: mk_word_item ( @n) ) ;
1001
990
} ;
1002
991
for reader:: tagged_docs( md, tag_meta_item_name_value) |meta_item_doc| {
1003
992
let nd = reader:: get_doc ( meta_item_doc, tag_meta_item_name) ;
1004
993
let vd = reader:: get_doc ( meta_item_doc, tag_meta_item_value) ;
1005
- let n = str :: from_bytes ( reader :: doc_data ( nd ) ) ;
1006
- let v = str :: from_bytes ( reader :: doc_data ( vd ) ) ;
994
+ let n = nd . as_str ( ) ;
995
+ let v = vd . as_str ( ) ;
1007
996
// FIXME (#623): Should be able to decode meta_name_value variants,
1008
997
// but currently the encoder just drops them
1009
998
items. push ( attr:: mk_name_value_item_str ( @n, @v) ) ;
1010
999
} ;
1011
1000
for reader:: tagged_docs( md, tag_meta_item_list) |meta_item_doc| {
1012
1001
let nd = reader:: get_doc ( meta_item_doc, tag_meta_item_name) ;
1013
- let n = str :: from_bytes ( reader :: doc_data ( nd ) ) ;
1002
+ let n = nd . as_str ( ) ;
1014
1003
let subitems = get_meta_items ( meta_item_doc) ;
1015
1004
items. push ( attr:: mk_list_item ( @n, subitems) ) ;
1016
1005
} ;
@@ -1079,7 +1068,7 @@ pub fn get_crate_deps(data: @~[u8]) -> ~[crate_dep] {
1079
1068
let depsdoc = reader:: get_doc ( cratedoc, tag_crate_deps) ;
1080
1069
let mut crate_num = 1 ;
1081
1070
fn docstr ( doc : ebml:: Doc , tag_ : uint ) -> ~str {
1082
- str :: from_bytes ( reader:: doc_data ( reader :: get_doc ( doc, tag_) ) )
1071
+ reader:: get_doc ( doc, tag_) . as_str ( )
1083
1072
}
1084
1073
for reader:: tagged_docs( depsdoc, tag_crate_dep) |depdoc| {
1085
1074
deps. push ( crate_dep { cnum : crate_num,
@@ -1106,7 +1095,7 @@ fn list_crate_deps(data: @~[u8], out: @io::Writer) {
1106
1095
pub fn get_crate_hash ( data : @~[ u8 ] ) -> @~str {
1107
1096
let cratedoc = reader:: Doc ( data) ;
1108
1097
let hashdoc = reader:: get_doc ( cratedoc, tag_crate_hash) ;
1109
- @str :: from_bytes ( reader :: doc_data ( hashdoc) )
1098
+ @hashdoc. as_str ( )
1110
1099
}
1111
1100
1112
1101
pub fn get_crate_vers ( data : @~[ u8 ] ) -> @~str {
@@ -1161,7 +1150,7 @@ pub fn get_link_args_for_crate(cdata: cmd) -> ~[~str] {
1161
1150
let link_args = reader:: get_doc ( reader:: Doc ( cdata. data ) , tag_link_args) ;
1162
1151
let mut result = ~[ ] ;
1163
1152
for reader:: tagged_docs( link_args, tag_link_args_arg) |arg_doc| {
1164
- result. push ( reader :: doc_as_str ( arg_doc) ) ;
1153
+ result. push ( arg_doc. as_str ( ) ) ;
1165
1154
}
1166
1155
result
1167
1156
}
0 commit comments