diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-08-22 17:58:05 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-08-22 20:32:09 -0700 |
| commit | c8ce32e7f45a020eebcd7329fbe33e8b53f832a3 (patch) | |
| tree | 63b905a71ab35dd5a1690213ea54e966842baaaa /src/rustc/metadata/encoder.rs | |
| parent | b3b1c3bf4d72b59280cea647030c9813007f7b10 (diff) | |
| download | rust-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.rs | 11 |
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() |
