]>
Commit | Line | Data |
---|---|---|
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 | |
6 | use std::fmt::Debug; | |
7 | ||
8 | const FOO: impl Debug + Clone + PartialEq<i32> = 42; | |
9 | ||
10 | static BAR: impl Debug + Clone + PartialEq<i32> = 42; | |
11 | ||
12 | fn a<T: Clone>(x: T) { | |
13 | let y: impl Clone = x; | |
14 | let _ = y.clone(); | |
15 | } | |
16 | ||
17 | fn b<T: Clone>(x: T) { | |
18 | let f = move || { | |
19 | let y: impl Clone = x; | |
20 | let _ = y.clone(); | |
21 | }; | |
22 | f(); | |
23 | } | |
24 | ||
25 | trait Foo<T: Clone> { | |
26 | fn a(x: T) { | |
27 | let y: impl Clone = x; | |
28 | let _ = y.clone(); | |
29 | } | |
30 | } | |
31 | ||
32 | impl<T: Clone> Foo<T> for i32 { | |
33 | fn a(x: T) { | |
34 | let y: impl Clone = x; | |
35 | let _ = y.clone(); | |
36 | } | |
37 | } | |
38 | ||
39 | fn 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 | } |