]> git.proxmox.com Git - rustc.git/blob - tests/ui/traits/issue-33140.rs
New upstream version 1.68.2+dfsg1
[rustc.git] / tests / 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 }