]> git.proxmox.com Git - rustc.git/blame - src/test/ui/impl-trait-in-bindings.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / src / test / ui / impl-trait-in-bindings.rs
CommitLineData
416331ca
XL
1// run-pass
2
0bf4aa26 3#![feature(impl_trait_in_bindings)]
f9f354fc 4//~^ WARN the feature `impl_trait_in_bindings` is incomplete
0bf4aa26
XL
5
6use std::fmt::Debug;
7
8const FOO: impl Debug + Clone + PartialEq<i32> = 42;
9
10static BAR: impl Debug + Clone + PartialEq<i32> = 42;
11
12fn a<T: Clone>(x: T) {
13 let y: impl Clone = x;
14 let _ = y.clone();
15}
16
17fn b<T: Clone>(x: T) {
18 let f = move || {
19 let y: impl Clone = x;
20 let _ = y.clone();
21 };
22 f();
23}
24
25trait Foo<T: Clone> {
26 fn a(x: T) {
27 let y: impl Clone = x;
28 let _ = y.clone();
29 }
30}
31
32impl<T: Clone> Foo<T> for i32 {
33 fn a(x: T) {
34 let y: impl Clone = x;
35 let _ = y.clone();
36 }
37}
38
39fn main() {
40 let foo: impl Debug + Clone + PartialEq<i32> = 42;
41
42 assert_eq!(FOO.clone(), 42);
43 assert_eq!(BAR.clone(), 42);
44 assert_eq!(foo.clone(), 42);
45
46 a(42);
47 b(42);
48 i32::a(42);
49}