1- // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
1+ // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
22// file at the top-level directory of this distribution and at
33// http://rust-lang.org/COPYRIGHT.
44//
@@ -319,15 +319,10 @@ fn simplify_ast(ii: &ast::inlined_item) -> ast::inlined_item {
319319 } ) ;
320320
321321 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) )
331326 }
332327}
333328
@@ -346,16 +341,10 @@ fn renumber_ast(xcx: @ExtendedDecodeContext, ii: ast::inlined_item)
346341 } ) ;
347342
348343 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+ }
359348}
360349
361350// ______________________________________________________________________
@@ -374,22 +363,22 @@ fn decode_def(xcx: @ExtendedDecodeContext, doc: ebml::Doc) -> ast::def {
374363impl tr for ast:: def {
375364 fn tr ( & self , xcx : @ExtendedDecodeContext ) -> ast:: def {
376365 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) ,
378367 ast:: def_static_method( did, did2_opt, p) => {
379368 ast:: def_static_method ( did. tr ( xcx) ,
380369 did2_opt. map ( |did2| did2. tr ( xcx) ) ,
381370 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) ,
390379 ast:: def_variant( e_did, v_did) => {
391380 ast:: def_variant ( e_did. tr ( xcx) , v_did. tr ( xcx) )
392- }
381+ } ,
393382 ast:: def_trait( did) => ast:: def_trait ( did. tr ( xcx) ) ,
394383 ast:: def_ty( did) => ast:: def_ty ( did. tr ( xcx) ) ,
395384 ast:: def_prim_ty( p) => ast:: def_prim_ty ( p) ,
@@ -402,9 +391,7 @@ impl tr for ast::def {
402391 xcx. tr_id ( nid2) ,
403392 xcx. tr_id ( nid3) )
404393 }
405- ast:: def_struct( did) => {
406- ast:: def_struct ( did. tr ( xcx) )
407- }
394+ ast:: def_struct( did) => ast:: def_struct ( did. tr ( xcx) ) ,
408395 ast:: def_region( nid) => ast:: def_region ( xcx. tr_id ( nid) ) ,
409396 ast:: def_typaram_binder( nid) => {
410397 ast:: def_typaram_binder ( xcx. tr_id ( nid) )
@@ -419,12 +406,9 @@ impl tr for ast::def {
419406
420407impl tr for ty:: AutoAdjustment {
421408 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) => {
428412 ty:: AutoDerefRef ( ty:: AutoDerefRef {
429413 autoderefs : adr. autoderefs ,
430414 autoref : adr. autoref . map ( |ar| ar. tr ( xcx) ) ,
@@ -1110,56 +1094,75 @@ fn decode_side_tables(xcx: @ExtendedDecodeContext,
11101094 found for id %d (orig %d)",
11111095 tag, id, id0) ;
11121096
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 => {
11601099 xcx. dcx . tcx . sess . bug (
11611100 fmt ! ( "unknown tag found in side tables: %x" , tag) ) ;
11621101 }
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+ }
11631166 }
11641167
11651168 debug ! ( ">< Side table doc loaded" ) ;
0 commit comments