]> git.lizzy.rs Git - rust.git/blob - src/test/ui/traits/issue-33140.rs
:arrow_up: rust-analyzer
[rust.git] / src / test / ui / traits / issue-33140.rs
1 trait Trait {
2     fn xyz() -> bool;
3 }
4
5 impl Trait for dyn Send + Sync {
6     fn xyz() -> bool { false }
7 }
8
9 impl Trait for dyn Sync + Send {
10 //~^ ERROR conflicting implementations
11     fn xyz() -> bool { true }
12 }
13
14 trait Trait2 {
15     fn uvw() -> bool;
16 }
17
18 impl Trait2 for dyn Send + Sync {
19     fn uvw() -> bool { false }
20 }
21
22 impl Trait2 for dyn Sync + Send + Sync {
23 //~^ ERROR conflicting implementations
24     fn uvw() -> bool { true }
25 }
26
27 struct Foo<T: ?Sized>(T);
28 impl Foo<dyn Send + Sync> {
29     fn abc() -> bool { //~ ERROR duplicate definitions with name `abc`
30         false
31     }
32 }
33
34 impl Foo<dyn Sync + Send> {
35     fn abc() -> bool {
36         true
37     }
38 }
39
40 fn main() {
41     assert_eq!(<dyn Send + Sync>::xyz(), false);
42     assert_eq!(<dyn Sync + Send>::xyz(), true);
43     assert_eq!(<dyn Send + Sync>::uvw(), false);
44     assert_eq!(<dyn Sync + Send+ Sync>::uvw(), true);
45     assert_eq!(<Foo<dyn Send + Sync>>::abc(), false);
46     assert_eq!(<Foo<dyn Sync + Send>>::abc(), true);
47 }