summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-10-02 16:19:03 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-10-02 16:19:03 -0700
commit4101d8c22d239eba5b2202faa28db54b5e1a4909 (patch)
tree9de4396ac9ec454e2e4387fcbfc8b41c86a62179 /src/rustc
parent2df168812d3abd3878a55058b12d911ff17c95ad (diff)
downloadrust-4101d8c22d239eba5b2202faa28db54b5e1a4909.tar.gz
rust-4101d8c22d239eba5b2202faa28db54b5e1a4909.zip
rustc: Add a side table for legacy boxed traits, not filled in.
This is part of the transition to "@int as @Trait".
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/metadata/common.rs3
-rw-r--r--src/rustc/middle/astencode.rs8
-rw-r--r--src/rustc/middle/ty.rs6
3 files changed, 14 insertions, 3 deletions
diff --git a/src/rustc/metadata/common.rs b/src/rustc/metadata/common.rs
index 2d62bf7b4a2..1857abf2cf2 100644
--- a/src/rustc/metadata/common.rs
+++ b/src/rustc/metadata/common.rs
@@ -120,7 +120,8 @@ enum astencode_tag { // Reserves 0x50 -- 0x6f
     tag_table_spill = 0x5f,
     tag_table_method_map = 0x60,
     tag_table_vtable_map = 0x61,
-    tag_table_adjustments = 0x62
+    tag_table_adjustments = 0x62,
+    tag_table_legacy_boxed_trait = 0x63
 }
 
 type link_meta = {name: ~str, vers: ~str, extras_hash: ~str};
diff --git a/src/rustc/middle/astencode.rs b/src/rustc/middle/astencode.rs
index 9332ebe9770..92af75ef84a 100644
--- a/src/rustc/middle/astencode.rs
+++ b/src/rustc/middle/astencode.rs
@@ -832,6 +832,12 @@ fn encode_side_tables_for_id(ecx: @e::encode_ctxt,
             }
         }
     }
+
+    do option::iter(&tcx.legacy_boxed_traits.find(id)) |_x| {
+        do ebml_w.tag(c::tag_table_legacy_boxed_trait) {
+            ebml_w.id(id);
+        }
+    }
 }
 
 trait doc_decoder_helpers {
@@ -963,6 +969,8 @@ fn decode_side_tables(xcx: extended_decode_ctxt,
             } else if tag == (c::tag_table_adjustments as uint) {
                 let adj = @ty::deserialize_AutoAdjustment(val_dsr).tr(xcx);
                 dcx.tcx.adjustments.insert(id, adj);
+            } else if tag == (c::tag_table_legacy_boxed_trait as uint) {
+                dcx.tcx.legacy_boxed_traits.insert(id, ());
             } else {
                 xcx.dcx.tcx.sess.bug(
                     fmt!("unknown tag found in side tables: %x", tag));
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs
index a96388e9d77..5afc60f58ac 100644
--- a/src/rustc/middle/ty.rs
+++ b/src/rustc/middle/ty.rs
@@ -356,7 +356,8 @@ type ctxt =
       inferred_modes: HashMap<ast::node_id, ast::mode>,
       adjustments: HashMap<ast::node_id, @AutoAdjustment>,
       normalized_cache: HashMap<t, t>,
-      lang_items: middle::lang_items::LanguageItems};
+      lang_items: middle::lang_items::LanguageItems,
+      legacy_boxed_traits: HashMap<node_id, ()>};
 
 enum tbox_flag {
     has_params = 1,
@@ -875,7 +876,8 @@ fn mk_ctxt(s: session::session,
       inferred_modes: HashMap(),
       adjustments: HashMap(),
       normalized_cache: new_ty_hash(),
-      lang_items: move lang_items}
+      lang_items: move lang_items,
+      legacy_boxed_traits: HashMap()}
 }