fix enum variant downcasting

This commit is contained in:
Oliver Schneider 2016-09-20 13:34:53 +02:00
parent 1e0b3b207d
commit 477d1c20f4
No known key found for this signature in database
GPG Key ID: 56D6EEA0FC67AC46

View File

@ -907,9 +907,9 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
Downcast(_, variant) => {
use rustc::ty::layout::Layout::*;
match *base_layout {
General { discr, .. } => {
General { ref variants, .. } => {
return Ok(Lvalue {
ptr: base.ptr.offset(discr.size().bytes() as isize),
ptr: base.ptr.offset(variants[variant].field_offset(1).bytes() as isize),
extra: LvalueExtra::DowncastVariant(variant),
});
}