]> git.lizzy.rs Git - rust.git/blob - src/test/ui/invalid_dispatch_from_dyn_impls.rs
Rollup merge of #55754 - spastorino:fix-process-output-docs, r=alexcrichton
[rust.git] / src / test / ui / invalid_dispatch_from_dyn_impls.rs
1 // Copyright 2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 #![feature(unsize, dispatch_from_dyn)]
12
13 use std::{
14     ops::DispatchFromDyn,
15     marker::{Unsize, PhantomData},
16 };
17
18 struct WrapperWithExtraField<T>(T, i32);
19
20 impl<T, U> DispatchFromDyn<WrapperWithExtraField<U>> for WrapperWithExtraField<T>
21 where
22     T: DispatchFromDyn<U>,
23 {} //~^^^ ERROR [E0378]
24
25
26 struct MultiplePointers<T: ?Sized>{
27     ptr1: *const T,
28     ptr2: *const T,
29 }
30
31 impl<T: ?Sized, U: ?Sized> DispatchFromDyn<MultiplePointers<U>> for MultiplePointers<T>
32 where
33     T: Unsize<U>,
34 {} //~^^^ ERROR [E0378]
35
36
37 struct NothingToCoerce<T: ?Sized> {
38     data: PhantomData<T>,
39 }
40
41 impl<T: ?Sized, U: ?Sized> DispatchFromDyn<NothingToCoerce<T>> for NothingToCoerce<U> {}
42 //~^ ERROR [E0378]
43
44 #[repr(C)]
45 struct HasReprC<T: ?Sized>(Box<T>);
46
47 impl<T: ?Sized, U: ?Sized> DispatchFromDyn<HasReprC<U>> for HasReprC<T>
48 where
49     T: Unsize<U>,
50 {} //~^^^ ERROR [E0378]
51
52 fn main() {}