1
- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
1
+ // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
2
2
// file at the top-level directory of this distribution and at
3
3
// http://rust-lang.org/COPYRIGHT.
4
4
//
@@ -319,15 +319,10 @@ fn simplify_ast(ii: &ast::inlined_item) -> ast::inlined_item {
319
319
} ) ;
320
320
321
321
match * ii {
322
- ast:: ii_item( i) => {
323
- ast:: ii_item ( fld. fold_item ( i) . get ( ) ) //hack: we're not dropping items
324
- }
325
- ast:: ii_method( d, m) => {
326
- ast:: ii_method ( d, fld. fold_method ( m) )
327
- }
328
- ast:: ii_foreign( i) => {
329
- ast:: ii_foreign ( fld. fold_foreign_item ( i) )
330
- }
322
+ //hack: we're not dropping items
323
+ ast:: ii_item( i) => ast:: ii_item ( fld. fold_item ( i) . get ( ) ) ,
324
+ ast:: ii_method( d, m) => ast:: ii_method ( d, fld. fold_method ( m) ) ,
325
+ ast:: ii_foreign( i) => ast:: ii_foreign ( fld. fold_foreign_item ( i) )
331
326
}
332
327
}
333
328
@@ -346,16 +341,10 @@ fn renumber_ast(xcx: @ExtendedDecodeContext, ii: ast::inlined_item)
346
341
} ) ;
347
342
348
343
match ii {
349
- ast:: ii_item( i) => {
350
- ast:: ii_item ( fld. fold_item ( i) . get ( ) )
351
- }
352
- ast:: ii_method( d, m) => {
353
- ast:: ii_method ( xcx. tr_def_id ( d) , fld. fold_method ( m) )
354
- }
355
- ast:: ii_foreign( i) => {
356
- ast:: ii_foreign ( fld. fold_foreign_item ( i) )
357
- }
358
- }
344
+ ast:: ii_item( i) => ast:: ii_item ( fld. fold_item ( i) . get ( ) ) ,
345
+ ast:: ii_method( d, m) => ast:: ii_method ( xcx. tr_def_id ( d) , fld. fold_method ( m) ) ,
346
+ ast:: ii_foreign( i) => ast:: ii_foreign ( fld. fold_foreign_item ( i) ) ,
347
+ }
359
348
}
360
349
361
350
// ______________________________________________________________________
@@ -374,22 +363,22 @@ fn decode_def(xcx: @ExtendedDecodeContext, doc: ebml::Doc) -> ast::def {
374
363
impl tr for ast:: def {
375
364
fn tr ( & self , xcx : @ExtendedDecodeContext ) -> ast:: def {
376
365
match * self {
377
- ast:: def_fn( did, p) => { ast:: def_fn ( did. tr ( xcx) , p) }
366
+ ast:: def_fn( did, p) => ast:: def_fn ( did. tr ( xcx) , p) ,
378
367
ast:: def_static_method( did, did2_opt, p) => {
379
368
ast:: def_static_method ( did. tr ( xcx) ,
380
369
did2_opt. map ( |did2| did2. tr ( xcx) ) ,
381
370
p)
382
- }
383
- ast:: def_self_ty( nid) => { ast:: def_self_ty ( xcx. tr_id ( nid) ) }
384
- ast:: def_self( nid, i) => { ast:: def_self ( xcx. tr_id ( nid) , i) }
385
- ast:: def_mod( did) => { ast:: def_mod ( did. tr ( xcx) ) }
386
- ast:: def_foreign_mod( did) => { ast:: def_foreign_mod ( did. tr ( xcx) ) }
387
- ast:: def_const( did) => { ast:: def_const ( did. tr ( xcx) ) }
388
- ast:: def_arg( nid, b) => { ast:: def_arg ( xcx. tr_id ( nid) , b) }
389
- ast:: def_local( nid, b) => { ast:: def_local ( xcx. tr_id ( nid) , b) }
371
+ } ,
372
+ ast:: def_self_ty( nid) => ast:: def_self_ty ( xcx. tr_id ( nid) ) ,
373
+ ast:: def_self( nid, i) => ast:: def_self ( xcx. tr_id ( nid) , i) ,
374
+ ast:: def_mod( did) => ast:: def_mod ( did. tr ( xcx) ) ,
375
+ ast:: def_foreign_mod( did) => ast:: def_foreign_mod ( did. tr ( xcx) ) ,
376
+ ast:: def_const( did) => ast:: def_const ( did. tr ( xcx) ) ,
377
+ ast:: def_arg( nid, b) => ast:: def_arg ( xcx. tr_id ( nid) , b) ,
378
+ ast:: def_local( nid, b) => ast:: def_local ( xcx. tr_id ( nid) , b) ,
390
379
ast:: def_variant( e_did, v_did) => {
391
380
ast:: def_variant ( e_did. tr ( xcx) , v_did. tr ( xcx) )
392
- }
381
+ } ,
393
382
ast:: def_trait( did) => ast:: def_trait ( did. tr ( xcx) ) ,
394
383
ast:: def_ty( did) => ast:: def_ty ( did. tr ( xcx) ) ,
395
384
ast:: def_prim_ty( p) => ast:: def_prim_ty ( p) ,
@@ -402,9 +391,7 @@ impl tr for ast::def {
402
391
xcx. tr_id ( nid2) ,
403
392
xcx. tr_id ( nid3) )
404
393
}
405
- ast:: def_struct( did) => {
406
- ast:: def_struct ( did. tr ( xcx) )
407
- }
394
+ ast:: def_struct( did) => ast:: def_struct ( did. tr ( xcx) ) ,
408
395
ast:: def_region( nid) => ast:: def_region ( xcx. tr_id ( nid) ) ,
409
396
ast:: def_typaram_binder( nid) => {
410
397
ast:: def_typaram_binder ( xcx. tr_id ( nid) )
@@ -419,12 +406,9 @@ impl tr for ast::def {
419
406
420
407
impl tr for ty:: AutoAdjustment {
421
408
fn tr ( & self , xcx : @ExtendedDecodeContext ) -> ty:: AutoAdjustment {
422
- match self {
423
- & ty:: AutoAddEnv ( r, s) => {
424
- ty:: AutoAddEnv ( r. tr ( xcx) , s)
425
- }
426
-
427
- & ty:: AutoDerefRef ( ref adr) => {
409
+ match * self {
410
+ ty:: AutoAddEnv ( r, s) => ty:: AutoAddEnv ( r. tr ( xcx) , s) ,
411
+ ty:: AutoDerefRef ( ref adr) => {
428
412
ty:: AutoDerefRef ( ty:: AutoDerefRef {
429
413
autoderefs : adr. autoderefs ,
430
414
autoref : adr. autoref . map ( |ar| ar. tr ( xcx) ) ,
@@ -1110,56 +1094,75 @@ fn decode_side_tables(xcx: @ExtendedDecodeContext,
1110
1094
found for id %d (orig %d)",
1111
1095
tag, id, id0) ;
1112
1096
1113
- if tag == ( c:: tag_table_moves_map as uint ) {
1114
- dcx. maps . moves_map . insert ( id) ;
1115
- } else {
1116
- let val_doc = entry_doc. get ( c:: tag_table_val as uint ) ;
1117
- let mut val_dsr = reader:: Decoder ( val_doc) ;
1118
- let val_dsr = & mut val_dsr;
1119
- if tag == ( c:: tag_table_def as uint ) {
1120
- let def = decode_def ( xcx, val_doc) ;
1121
- dcx. tcx . def_map . insert ( id, def) ;
1122
- } else if tag == ( c:: tag_table_node_type as uint ) {
1123
- let ty = val_dsr. read_ty ( xcx) ;
1124
- debug ! ( "inserting ty for node %?: %s" ,
1125
- id, ty_to_str( dcx. tcx, ty) ) ;
1126
- dcx. tcx . node_types . insert ( id as uint , ty) ;
1127
- } else if tag == ( c:: tag_table_node_type_subst as uint ) {
1128
- let tys = val_dsr. read_tys ( xcx) ;
1129
- dcx. tcx . node_type_substs . insert ( id, tys) ;
1130
- } else if tag == ( c:: tag_table_freevars as uint ) {
1131
- let fv_info = @val_dsr. read_to_vec ( |val_dsr| {
1132
- @val_dsr. read_freevar_entry ( xcx)
1133
- } ) ;
1134
- dcx. tcx . freevars . insert ( id, fv_info) ;
1135
- } else if tag == ( c:: tag_table_tcache as uint ) {
1136
- let tpbt = val_dsr. read_ty_param_bounds_and_ty ( xcx) ;
1137
- let lid = ast:: def_id { crate : ast:: local_crate, node : id } ;
1138
- dcx. tcx . tcache . insert ( lid, tpbt) ;
1139
- } else if tag == ( c:: tag_table_param_defs as uint ) {
1140
- let bounds = val_dsr. read_type_param_def ( xcx) ;
1141
- dcx. tcx . ty_param_defs . insert ( id, bounds) ;
1142
- } else if tag == ( c:: tag_table_method_map as uint ) {
1143
- dcx. maps . method_map . insert (
1144
- id,
1145
- val_dsr. read_method_map_entry ( xcx) ) ;
1146
- } else if tag == ( c:: tag_table_vtable_map as uint ) {
1147
- dcx. maps . vtable_map . insert ( id,
1148
- val_dsr. read_vtable_res ( xcx) ) ;
1149
- } else if tag == ( c:: tag_table_adjustments as uint ) {
1150
- let adj: @ty:: AutoAdjustment = @Decodable :: decode ( val_dsr) ;
1151
- adj. tr ( xcx) ;
1152
- dcx. tcx . adjustments . insert ( id, adj) ;
1153
- } else if tag == ( c:: tag_table_capture_map as uint ) {
1154
- let cvars =
1155
- at_vec:: to_managed_consume (
1156
- val_dsr. read_to_vec (
1157
- |val_dsr| val_dsr. read_capture_var ( xcx) ) ) ;
1158
- dcx. maps . capture_map . insert ( id, cvars) ;
1159
- } else {
1097
+ match c:: astencode_tag:: from_uint ( tag) {
1098
+ None => {
1160
1099
xcx. dcx . tcx . sess . bug (
1161
1100
fmt ! ( "unknown tag found in side tables: %x" , tag) ) ;
1162
1101
}
1102
+ Some ( value) => if value == c:: tag_table_moves_map {
1103
+ dcx. maps . moves_map . insert ( id) ;
1104
+ } else {
1105
+ let val_doc = entry_doc. get ( c:: tag_table_val as uint ) ;
1106
+ let mut val_dsr = reader:: Decoder ( val_doc) ;
1107
+ let val_dsr = & mut val_dsr;
1108
+
1109
+ match value {
1110
+ c:: tag_table_def => {
1111
+ let def = decode_def ( xcx, val_doc) ;
1112
+ dcx. tcx . def_map . insert ( id, def) ;
1113
+ }
1114
+ c:: tag_table_node_type => {
1115
+ let ty = val_dsr. read_ty ( xcx) ;
1116
+ debug ! ( "inserting ty for node %?: %s" ,
1117
+ id, ty_to_str( dcx. tcx, ty) ) ;
1118
+ dcx. tcx . node_types . insert ( id as uint , ty) ;
1119
+ }
1120
+ c:: tag_table_node_type_subst => {
1121
+ let tys = val_dsr. read_tys ( xcx) ;
1122
+ dcx. tcx . node_type_substs . insert ( id, tys) ;
1123
+ }
1124
+ c:: tag_table_freevars => {
1125
+ let fv_info = @val_dsr. read_to_vec ( |val_dsr| {
1126
+ @val_dsr. read_freevar_entry ( xcx)
1127
+ } ) ;
1128
+ dcx. tcx . freevars . insert ( id, fv_info) ;
1129
+ }
1130
+ c:: tag_table_tcache => {
1131
+ let tpbt = val_dsr. read_ty_param_bounds_and_ty ( xcx) ;
1132
+ let lid = ast:: def_id { crate : ast:: local_crate, node : id } ;
1133
+ dcx. tcx . tcache . insert ( lid, tpbt) ;
1134
+ }
1135
+ c:: tag_table_param_defs => {
1136
+ let bounds = val_dsr. read_type_param_def ( xcx) ;
1137
+ dcx. tcx . ty_param_defs . insert ( id, bounds) ;
1138
+ }
1139
+ c:: tag_table_method_map => {
1140
+ dcx. maps . method_map . insert (
1141
+ id,
1142
+ val_dsr. read_method_map_entry ( xcx) ) ;
1143
+ }
1144
+ c:: tag_table_vtable_map => {
1145
+ dcx. maps . vtable_map . insert ( id,
1146
+ val_dsr. read_vtable_res ( xcx) ) ;
1147
+ }
1148
+ c:: tag_table_adjustments => {
1149
+ let adj: @ty:: AutoAdjustment = @Decodable :: decode ( val_dsr) ;
1150
+ adj. tr ( xcx) ;
1151
+ dcx. tcx . adjustments . insert ( id, adj) ;
1152
+ }
1153
+ c:: tag_table_capture_map => {
1154
+ let cvars =
1155
+ at_vec:: to_managed_consume (
1156
+ val_dsr. read_to_vec (
1157
+ |val_dsr| val_dsr. read_capture_var ( xcx) ) ) ;
1158
+ dcx. maps . capture_map . insert ( id, cvars) ;
1159
+ }
1160
+ _ => {
1161
+ xcx. dcx . tcx . sess . bug (
1162
+ fmt ! ( "unknown tag found in side tables: %x" , tag) ) ;
1163
+ }
1164
+ }
1165
+ }
1163
1166
}
1164
1167
1165
1168
debug ! ( ">< Side table doc loaded" ) ;
0 commit comments