use trans::monomorphize;
use trans::type_::Type;
use trans::type_of;
-use middle::cast::{CastTy,IntTy};
use middle::subst::Substs;
+use middle::ty::adjustment::{AdjustDerefRef, AdjustReifyFnPointer};
+use middle::ty::adjustment::AdjustUnsafeFnPointer;
use middle::ty::{self, Ty};
+use middle::ty::cast::{CastTy,IntTy};
use util::nodemap::NodeMap;
use rustc_front::hir;
v: ValueRef,
ty: Ty<'tcx>)
-> (ValueRef, Ty<'tcx>) {
- match ty.builtin_deref(true) {
+ match ty.builtin_deref(true, ty::NoPreference) {
Some(mt) => {
if type_is_sized(cx.tcx(), mt.ty) {
(const_deref_ptr(cx, v), mt.ty)
&cx.tcx().expr_ty_adjusted(e));
let opt_adj = cx.tcx().tables.borrow().adjustments.get(&e.id).cloned();
match opt_adj {
- Some(ty::AdjustReifyFnPointer) => {
+ Some(AdjustReifyFnPointer) => {
// FIXME(#19925) once fn item types are
// zero-sized, we'll need to do something here
}
- Some(ty::AdjustUnsafeFnPointer) => {
+ Some(AdjustUnsafeFnPointer) => {
// purely a type-level thing
}
- Some(ty::AdjustDerefRef(adj)) => {
+ Some(AdjustDerefRef(adj)) => {
let mut ty = ety;
// Save the last autoderef in case we can avoid it.
if adj.autoderefs > 0 {
param_substs,
&target);
- let pointee_ty = ty.builtin_deref(true)
+ let pointee_ty = ty.builtin_deref(true, ty::NoPreference)
.expect("consts: unsizing got non-pointer type").ty;
let (base, old_info) = if !type_is_sized(cx.tcx(), pointee_ty) {
// Normally, the source is a thin pointer and we are
(llconst, None)
};
- let unsized_ty = target.builtin_deref(true)
+ let unsized_ty = target.builtin_deref(true, ty::NoPreference)
.expect("consts: unsizing got non-pointer target type").ty;
let ptr_ty = type_of::in_memory_type_of(cx, unsized_ty).ptr_to();
let base = ptrcast(base, ptr_ty);
}
if type_is_fat_ptr(cx.tcx(), t_expr) {
// Fat pointer casts.
- let t_cast_inner = t_cast.builtin_deref(true).expect("cast to non-pointer").ty;
+ let t_cast_inner =
+ t_cast.builtin_deref(true, ty::NoPreference).expect("cast to non-pointer").ty;
let ptr_ty = type_of::in_memory_type_of(cx, t_cast_inner).ptr_to();
let addr = ptrcast(const_get_elt(cx, v, &[abi::FAT_PTR_ADDR as u32]),
ptr_ty);