@@ -50,10 +50,17 @@ use writer = extra::ebml::writer;
50
50
// used by astencode:
51
51
type abbrev_map = @RefCell < HashMap < ty:: t , tyencode:: ty_abbrev > > ;
52
52
53
+ /// A borrowed version of ast::inlined_item.
54
+ pub enum InlinedItemRef < ' a > {
55
+ ii_item_ref( & ' a ast:: item ) ,
56
+ ii_method_ref( ast:: DefId , bool , & ' a ast:: method ) ,
57
+ ii_foreign_ref( & ' a ast:: foreign_item )
58
+ }
59
+
53
60
pub type encode_inlined_item < ' a > = ' a |ecx: & EncodeContext ,
54
- ebml_w : & mut writer:: Encoder ,
55
- path: & [ ast_map:: path_elt ] ,
56
- ii : ast :: inlined_item |;
61
+ ebml_w : & mut writer:: Encoder ,
62
+ path: & [ ast_map:: path_elt ] ,
63
+ ii : InlinedItemRef |;
57
64
58
65
pub struct EncodeParams < ' a > {
59
66
diag : @SpanHandler ,
@@ -837,13 +844,13 @@ fn encode_info_for_method(ecx: &EncodeContext,
837
844
None => ( )
838
845
}
839
846
840
- for ast_method in ast_method_opt. iter ( ) {
847
+ for & ast_method in ast_method_opt. iter ( ) {
841
848
let num_params = tpt. generics . type_param_defs . len ( ) ;
842
849
if num_params > 0 u || is_default_impl
843
850
|| should_inline ( ast_method. attrs ) {
844
851
( ecx. encode_inlined_item ) (
845
852
ecx, ebml_w, impl_path,
846
- ii_method ( local_def ( parent_id) , false , * ast_method) ) ;
853
+ ii_method_ref ( local_def ( parent_id) , false , ast_method) ) ;
847
854
} else {
848
855
encode_symbol ( ecx, ebml_w, m. def_id . node ) ;
849
856
}
@@ -915,13 +922,13 @@ fn encode_extension_implementations(ecx: &EncodeContext,
915
922
916
923
fn encode_info_for_item ( ecx : & EncodeContext ,
917
924
ebml_w : & mut writer:: Encoder ,
918
- item: @ item,
925
+ item : & item ,
919
926
index : @RefCell < ~[ entry < i64 > ] > ,
920
927
path : & [ ast_map:: path_elt ] ,
921
928
vis : ast:: visibility ) {
922
929
let tcx = ecx. tcx ;
923
930
924
- fn add_to_index ( item : @ item, ebml_w : & writer:: Encoder ,
931
+ fn add_to_index ( item : & item , ebml_w : & writer:: Encoder ,
925
932
index : @RefCell < ~[ entry < i64 > ] > ) {
926
933
let mut index = index. borrow_mut ( ) ;
927
934
index. get ( ) . push ( entry {
@@ -958,7 +965,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
958
965
}
959
966
960
967
if !non_inlineable {
961
- ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
968
+ ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item_ref ( item) ) ;
962
969
}
963
970
encode_visibility ( ebml_w, vis) ;
964
971
ebml_w. end_tag ( ) ;
@@ -974,7 +981,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
974
981
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
975
982
encode_attributes ( ebml_w, item. attrs ) ;
976
983
if tps_len > 0 u || should_inline ( item. attrs ) {
977
- ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
984
+ ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item_ref ( item) ) ;
978
985
} else {
979
986
encode_symbol ( ecx, ebml_w, item. id ) ;
980
987
}
@@ -1032,7 +1039,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1032
1039
for v in ( * enum_definition) . variants . iter ( ) {
1033
1040
encode_variant_id ( ebml_w, local_def ( v. node . id ) ) ;
1034
1041
}
1035
- ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
1042
+ ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item_ref ( item) ) ;
1036
1043
encode_path ( ecx, ebml_w, path, ast_map:: path_name ( item. ident ) ) ;
1037
1044
1038
1045
// Encode inherent implementations for this enumeration.
@@ -1077,7 +1084,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1077
1084
needs to know*/
1078
1085
encode_struct_fields ( ecx, ebml_w, struct_def) ;
1079
1086
1080
- ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item ( item) ) ;
1087
+ ( ecx. encode_inlined_item ) ( ecx, ebml_w, path, ii_item_ref ( item) ) ;
1081
1088
1082
1089
// Encode inherent implementations for this structure.
1083
1090
encode_inherent_implementations ( ecx, ebml_w, def_id) ;
@@ -1272,7 +1279,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1272
1279
encode_method_sort ( ebml_w, 'p' ) ;
1273
1280
( ecx. encode_inlined_item ) (
1274
1281
ecx, ebml_w, path,
1275
- ii_method ( def_id, true , m) ) ;
1282
+ ii_method_ref ( def_id, true , m) ) ;
1276
1283
}
1277
1284
}
1278
1285
@@ -1288,7 +1295,7 @@ fn encode_info_for_item(ecx: &EncodeContext,
1288
1295
1289
1296
fn encode_info_for_foreign_item ( ecx : & EncodeContext ,
1290
1297
ebml_w : & mut writer:: Encoder ,
1291
- nitem : @ foreign_item ,
1298
+ nitem : & foreign_item ,
1292
1299
index : @RefCell < ~[ entry < i64 > ] > ,
1293
1300
path : & ast_map:: path ,
1294
1301
abi : AbiSet ) {
@@ -1309,7 +1316,7 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
1309
1316
& lookup_item_type ( ecx. tcx , local_def ( nitem. id ) ) ) ;
1310
1317
encode_name ( ecx, ebml_w, nitem. ident ) ;
1311
1318
if abi. is_intrinsic ( ) {
1312
- ( ecx. encode_inlined_item ) ( ecx, ebml_w, * path, ii_foreign ( nitem) ) ;
1319
+ ( ecx. encode_inlined_item ) ( ecx, ebml_w, * path, ii_foreign_ref ( nitem) ) ;
1313
1320
} else {
1314
1321
encode_symbol ( ecx, ebml_w, nitem. id ) ;
1315
1322
}
@@ -1331,9 +1338,9 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
1331
1338
ebml_w. end_tag ( ) ;
1332
1339
}
1333
1340
1334
- fn my_visit_expr ( _e : @ Expr ) { }
1341
+ fn my_visit_expr ( _e : & Expr ) { }
1335
1342
1336
- fn my_visit_item ( i : @ item,
1343
+ fn my_visit_item ( i : & item ,
1337
1344
items : ast_map:: map ,
1338
1345
ebml_w : & mut writer:: Encoder ,
1339
1346
ecx_ptr : * int ,
@@ -1352,7 +1359,7 @@ fn my_visit_item(i: @item,
1352
1359
}
1353
1360
}
1354
1361
1355
- fn my_visit_foreign_item ( ni : @ foreign_item ,
1362
+ fn my_visit_foreign_item ( ni : & foreign_item ,
1356
1363
items : ast_map:: map ,
1357
1364
ebml_w : & mut writer:: Encoder ,
1358
1365
ecx_ptr : * int ,
@@ -1391,19 +1398,19 @@ struct EncodeVisitor<'a,'b> {
1391
1398
}
1392
1399
1393
1400
impl < ' a , ' b > visit:: Visitor < ( ) > for EncodeVisitor < ' a , ' b > {
1394
- fn visit_expr ( & mut self , ex : @ Expr , _: ( ) ) {
1401
+ fn visit_expr ( & mut self , ex : & Expr , _: ( ) ) {
1395
1402
visit:: walk_expr ( self , ex, ( ) ) ;
1396
1403
my_visit_expr ( ex) ;
1397
1404
}
1398
- fn visit_item ( & mut self , i: @ item, _: ( ) ) {
1405
+ fn visit_item ( & mut self , i : & item , _: ( ) ) {
1399
1406
visit:: walk_item ( self , i, ( ) ) ;
1400
1407
my_visit_item ( i,
1401
1408
self . items ,
1402
1409
self . ebml_w_for_visit_item ,
1403
1410
self . ecx_ptr ,
1404
1411
self . index ) ;
1405
1412
}
1406
- fn visit_foreign_item ( & mut self , ni : @ foreign_item , _: ( ) ) {
1413
+ fn visit_foreign_item ( & mut self , ni : & foreign_item , _: ( ) ) {
1407
1414
visit:: walk_foreign_item ( self , ni, ( ) ) ;
1408
1415
my_visit_foreign_item ( ni,
1409
1416
self . items ,
@@ -1692,7 +1699,7 @@ struct ImplVisitor<'a,'b> {
1692
1699
}
1693
1700
1694
1701
impl < ' a , ' b > Visitor < ( ) > for ImplVisitor < ' a , ' b > {
1695
- fn visit_item ( & mut self , item : @ item, _: ( ) ) {
1702
+ fn visit_item ( & mut self , item : & item , _: ( ) ) {
1696
1703
match item. node {
1697
1704
item_impl( _, Some ( ref trait_ref) , _, _) => {
1698
1705
let def_map = self . ecx . tcx . def_map ;
0 commit comments