]>
git.proxmox.com Git - rustc.git/blob - src/test/codegen-units/unsizing.rs
1 // Copyright 2012-2015 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.
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.
11 // ignore-tidy-linelength
12 // compile-flags:-Zprint-trans-items=eager
15 #![feature(coerce_unsized)]
18 use std
::marker
::Unsize
;
19 use std
::ops
::CoerceUnsized
;
35 struct Struct
<T
: ?Sized
> {
45 // Custom Coercion Case
50 #[derive(Clone, Copy)]
51 struct Wrapper
<T
: ?Sized
>(*const T
);
53 impl<T
: ?Sized
+ Unsize
<U
>, U
: ?Sized
> CoerceUnsized
<Wrapper
<U
>> for Wrapper
<T
> {}
55 //~ TRANS_ITEM fn unsizing::main[0]
59 let bool_sized
= &true;
60 //~ TRANS_ITEM fn unsizing::{{impl}}[0]::foo[0]
61 let _bool_unsized
= bool_sized
as &Trait
;
63 let char_sized
= &true;
64 //~ TRANS_ITEM fn unsizing::{{impl}}[1]::foo[0]
65 let _char_unsized
= char_sized
as &Trait
;
68 let struct_sized
= &Struct
{
73 //~ TRANS_ITEM fn unsizing::{{impl}}[2]::foo[0]
74 let _struct_unsized
= struct_sized
as &Struct
<Trait
>;
77 let wrapper_sized
= Wrapper(&0u32);
78 //~ TRANS_ITEM fn unsizing::{{impl}}[3]::foo[0]
79 let _wrapper_sized
= wrapper_sized
as Wrapper
<Trait
>;