about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/debuginfo
diff options
context:
space:
mode:
authorTyler Mandry <tmandry@gmail.com>2019-04-18 14:39:03 -0700
committerTyler Mandry <tmandry@gmail.com>2019-04-25 10:28:09 -0700
commitb8f6de4aca47ddd1daa5217813848155a2a825fa (patch)
tree9c7ea87c73cf976fcca8be1b17f2971859ef2cb0 /src/librustc_codegen_llvm/debuginfo
parentf772c39bf9fb3af982bb9a4728d4fdc7308a8bbd (diff)
downloadrust-b8f6de4aca47ddd1daa5217813848155a2a825fa.tar.gz
rust-b8f6de4aca47ddd1daa5217813848155a2a825fa.zip
Generalize discriminant info calls for generators and ADTs
Diffstat (limited to 'src/librustc_codegen_llvm/debuginfo')
-rw-r--r--src/librustc_codegen_llvm/debuginfo/metadata.rs12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs
index 54d15e527c9..6f427f29fcc 100644
--- a/src/librustc_codegen_llvm/debuginfo/metadata.rs
+++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs
@@ -1382,12 +1382,6 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
                                                   variant_type_metadata,
                                                   member_descriptions);
 
-                    // TODO make this into a helper
-                    let discriminant = match &self.layout.ty.sty {
-                        ty::Adt(adt, _) => adt.discriminant_for_variant(cx.tcx, i).val as u64,
-                        ty::Generator(..) => i.as_usize() as u64,
-                        _ => bug!(),
-                    }.into();
                     MemberDescription {
                         name: if fallback {
                             String::new()
@@ -1399,7 +1393,9 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
                         size: self.layout.size,
                         align: self.layout.align.abi,
                         flags: DIFlags::FlagZero,
-                        discriminant,
+                        discriminant: Some(
+                            self.layout.ty.discriminant_for_variant(cx.tcx, i).unwrap().val as u64
+                        ),
                     }
                 }).collect()
             }
@@ -1722,7 +1718,7 @@ fn prepare_enum_metadata(
                 })
                 .collect(),
             ty::Generator(_, substs, _) => substs
-                .variants(enum_def_id, cx.tcx)
+                .variant_range(enum_def_id, cx.tcx)
                 .map(|v| substs.map_variant_name(v, |name| {
                     let name = SmallCStr::new(name);
                     unsafe {