From b96202b3cd20765126aeb3fe9f2931af9809ff4d Mon Sep 17 00:00:00 2001 From: Scott Olson Date: Fri, 2 Dec 2016 19:44:59 -0800 Subject: [PATCH] Update for changes in rustc. --- src/interpreter/mod.rs | 12 ++++++------ src/interpreter/terminator/intrinsics.rs | 4 ++-- src/interpreter/terminator/mod.rs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/interpreter/mod.rs b/src/interpreter/mod.rs index c1b6e1e63b6..1a52434f9fc 100644 --- a/src/interpreter/mod.rs +++ b/src/interpreter/mod.rs @@ -771,7 +771,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { match (field_index, &self.tcx.struct_tail(ty).sty) { (1, &ty::TyStr) | (1, &ty::TySlice(_)) => Ok(self.tcx.types.usize), - (1, &ty::TyTrait(_)) | + (1, &ty::TyDynamic(..)) | (0, _) => Ok(self.tcx.mk_imm_ptr(self.tcx.types.u8)), _ => bug!("invalid fat pointee type: {}", ty), } @@ -1009,7 +1009,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { trace!("deref to {} on {:?}", pointee_type, val); match self.tcx.struct_tail(pointee_type).sty { - ty::TyTrait(_) => { + ty::TyDynamic(..) => { let (ptr, vtable) = val.expect_ptr_vtable_pair(&self.memory)?; (ptr, LvalueExtra::Vtable(vtable)) }, @@ -1462,7 +1462,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { trace!("reading fat pointer extra of type {}", ty); let extra = ptr.offset(self.memory.pointer_size()); let extra = match self.tcx.struct_tail(ty).sty { - ty::TyTrait(..) => PrimVal::from_ptr(self.memory.read_ptr(extra)?), + ty::TyDynamic(..) => PrimVal::from_ptr(self.memory.read_ptr(extra)?), ty::TySlice(..) | ty::TyStr => PrimVal::from_uint(self.memory.read_usize(extra)?), _ => bug!("unsized primval ptr read from {:?}", ty), @@ -1529,14 +1529,14 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { let ptr = PrimVal::from_ptr(ptr); self.write_value(Value::ByValPair(ptr, len), dest, dest_ty)?; } - (&ty::TyTrait(_), &ty::TyTrait(_)) => { + (&ty::TyDynamic(..), &ty::TyDynamic(..)) => { // For now, upcasts are limited to changes in marker // traits, and hence never actually require an actual // change to the vtable. self.write_value(src, dest, dest_ty)?; }, - (_, &ty::TyTrait(ref data)) => { - let trait_ref = data.principal.with_self_ty(self.tcx, src_pointee_ty); + (_, &ty::TyDynamic(ref data, _)) => { + let trait_ref = data.principal().unwrap().with_self_ty(self.tcx, src_pointee_ty); let trait_ref = self.tcx.erase_regions(&trait_ref); let vtable = self.get_vtable(trait_ref)?; let ptr = src.read_ptr(&self.memory)?; diff --git a/src/interpreter/terminator/intrinsics.rs b/src/interpreter/terminator/intrinsics.rs index 16cdffe24ce..706fadd0ab4 100644 --- a/src/interpreter/terminator/intrinsics.rs +++ b/src/interpreter/terminator/intrinsics.rs @@ -182,7 +182,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { Value::ByValPair(ptr, extra) => Lvalue::Ptr { ptr: ptr.to_ptr(), extra: match self.tcx.struct_tail(ty).sty { - ty::TyTrait(_) => LvalueExtra::Vtable(extra.to_ptr()), + ty::TyDynamic(..) => LvalueExtra::Vtable(extra.to_ptr()), ty::TyStr | ty::TySlice(_) => LvalueExtra::Length(extra.try_as_uint()?), _ => bug!("invalid fat pointer type: {}", ptr_ty), }, @@ -465,7 +465,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { Ok((size, align)) } } - ty::TyTrait(..) => { + ty::TyDynamic(..) => { let (_, vtable) = value.expect_ptr_vtable_pair(&self.memory)?; // the second entry in the vtable is the dynamic size of the object. let size = self.memory.read_usize(vtable.offset(pointer_size))?; diff --git a/src/interpreter/terminator/mod.rs b/src/interpreter/terminator/mod.rs index a346b8fafa5..e95d68a67db 100644 --- a/src/interpreter/terminator/mod.rs +++ b/src/interpreter/terminator/mod.rs @@ -550,7 +550,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { Value::ByValPair(prim_ptr, extra) => { let ptr = prim_ptr.to_ptr(); let extra = match self.tcx.struct_tail(contents_ty).sty { - ty::TyTrait(_) => LvalueExtra::Vtable(extra.to_ptr()), + ty::TyDynamic(..) => LvalueExtra::Vtable(extra.to_ptr()), ty::TyStr | ty::TySlice(_) => LvalueExtra::Length(extra.try_as_uint()?), _ => bug!("invalid fat pointer type: {}", ty), }; @@ -640,7 +640,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { }; self.drop_fields(fields.iter().cloned().zip(offsets.iter().cloned()), lval, drop)?; }, - ty::TyTrait(_) => { + ty::TyDynamic(..) => { let (ptr, vtable) = match lval { Lvalue::Ptr { ptr, extra: LvalueExtra::Vtable(vtable) } => (ptr, vtable), _ => bug!("expected an lvalue with a vtable"),