// *mut T -> *mut U
impl<T: ?Sized+Unsize<U>, U: ?Sized> DispatchFromDyn<*mut U> for *mut T {}
+#[lang = "receiver"]
+pub trait Receiver {}
+
+impl<T: ?Sized> Receiver for &T {}
+impl<T: ?Sized> Receiver for &mut T {}
+impl<T: ?Sized> Receiver for Box<T> {}
+
#[lang = "copy"]
pub unsafe trait Copy {}
})),
None,
)?;
- let ptr = ecx.allocate(op.layout, MemoryKind::Stack)?;
+ let ptr = ecx.allocate(op.layout, MemoryKind::Stack);
ecx.copy_op(op, ptr.into())?;
let alloc = ecx.memory().get(ptr.to_ptr()?.alloc_id)?;
Ok(fx.tcx.intern_const_alloc(alloc.clone()))
_: &mut EvalContext<'a, 'mir, 'tcx, Self>,
ptr: Pointer,
_: MemoryKind<!>,
- ) -> EvalResult<'tcx, Pointer> {
- Ok(ptr)
+ ) -> Pointer {
+ ptr
}
fn stack_push(_: &mut EvalContext<'a, 'mir, 'tcx, Self>) -> EvalResult<'tcx>{