about summary refs log tree commit diff
path: root/src/rustc/metadata/encoder.rs
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-08-22 17:58:05 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-08-22 20:32:09 -0700
commitc8ce32e7f45a020eebcd7329fbe33e8b53f832a3 (patch)
tree63b905a71ab35dd5a1690213ea54e966842baaaa /src/rustc/metadata/encoder.rs
parentb3b1c3bf4d72b59280cea647030c9813007f7b10 (diff)
downloadrust-c8ce32e7f45a020eebcd7329fbe33e8b53f832a3.tar.gz
rust-c8ce32e7f45a020eebcd7329fbe33e8b53f832a3.zip
Represent "item families" in the decoder as an enum
This eliminates some match checks. Also get rid of other match checks
in metadata code.
Diffstat (limited to 'src/rustc/metadata/encoder.rs')
-rw-r--r--src/rustc/metadata/encoder.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index e14e64ddd0c..7b2e2b8a217 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -88,7 +88,7 @@ fn encode_region_param(ecx: @encode_ctxt, ebml_w: ebml::writer,
 fn encode_mutability(ebml_w: ebml::writer, mt: class_mutability) {
     do ebml_w.wr_tag(tag_class_mut) {
         let val = match mt {
-          class_immutable => 'i',
+          class_immutable => 'a',
           class_mutable => 'm'
         };
         ebml_w.writer.write(&[val as u8]);
@@ -472,7 +472,7 @@ fn purity_static_method_family(p: purity) -> char {
       unsafe_fn => 'U',
       pure_fn => 'P',
       impure_fn => 'F',
-      extern_fn => 'E'
+      _ => fail ~"extern fn can't be static"
     }
 }
 
@@ -813,19 +813,22 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer,
         visit_expr: |_e, _cx, _v| { },
         visit_item: |i, cx, v, copy ebml_w| {
             visit::visit_item(i, cx, v);
-            match check ecx.tcx.items.get(i.id) {
+            match ecx.tcx.items.get(i.id) {
               ast_map::node_item(_, pt) => {
                 encode_info_for_item(ecx, ebml_w, i, index, *pt);
               }
+              _ => fail ~"bad item"
             }
         },
         visit_foreign_item: |ni, cx, v, copy ebml_w| {
             visit::visit_foreign_item(ni, cx, v);
-            match check ecx.tcx.items.get(ni.id) {
+            match ecx.tcx.items.get(ni.id) {
               ast_map::node_foreign_item(_, abi, pt) => {
                 encode_info_for_foreign_item(ecx, ebml_w, ni,
                                              index, *pt, abi);
               }
+              // case for separate item and foreign-item tables
+              _ => fail ~"bad foreign item"
             }
         }
         with *visit::default_visitor()