]> git.lizzy.rs Git - rust.git/commitdiff
always encode variant fields
authorNiko Matsakis <niko@alum.mit.edu>
Fri, 22 Apr 2016 19:18:02 +0000 (15:18 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Wed, 18 May 2016 14:11:35 +0000 (10:11 -0400)
we need them to be able to retrace.

src/librustc_metadata/decoder.rs
src/librustc_metadata/encoder.rs

index e233dda7e91eeb91a99627601bd9ae8ee57d4c9e..d7499342bf5ea7ef889a8abeb5aec8b7c2f27cd1 100644 (file)
@@ -71,7 +71,10 @@ fn get_item(&self, item_id: DefIndex) -> Option<rbml::Doc> {
 
     fn lookup_item(&self, item_id: DefIndex) -> rbml::Doc {
         match self.get_item(item_id) {
-            None => bug!("lookup_item: id not found: {:?}", item_id),
+            None => bug!("lookup_item: id not found: {:?} in crate {:?} with number {}",
+                         item_id,
+                         self.name,
+                         self.cnum),
             Some(d) => d
         }
     }
index 8a16a4b4a634f379ab44974a69c4699c4013e44f..1b313aac7cac7cfc7b9b1053e6b96e0d3c5c16f3 100644 (file)
@@ -267,12 +267,8 @@ fn encode_enum_variant_info<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
         let vid = variant.did;
         let variant_node_id = ecx.local_id(vid);
 
-        if let ty::VariantKind::Struct = variant.kind() {
-            // tuple-like enum variant fields aren't really items so
-            // don't try to encode them.
-            for field in &variant.fields {
-                encode_field(ecx, rbml_w, field, index);
-            }
+        for field in &variant.fields {
+            encode_field(ecx, rbml_w, field, index);
         }
 
         let _task = index.record(vid, rbml_w);
@@ -306,6 +302,7 @@ fn encode_enum_variant_info<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
         encode_bounds_and_type_for_item(rbml_w, ecx, index, variant_node_id);
 
         rbml_w.end_tag();
+
         disr_val = disr_val.wrap_incr();
     }
 }