]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait-in-bindings.rs
Merge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy
[rust.git] / src / test / ui / impl-trait-in-bindings.rs
1 // run-pass
2
3 #![feature(impl_trait_in_bindings)]
4 //~^ WARN the feature `impl_trait_in_bindings` is incomplete
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 }