]> git.proxmox.com Git - rustc.git/blame - src/test/ui/issues/issue-33140-hack-boundaries.rs
New upstream version 1.44.1+dfsg1
[rustc.git] / src / test / ui / issues / issue-33140-hack-boundaries.rs
CommitLineData
ba9703b0 1#![feature(negative_impls)]
0731742a
XL
2#![allow(order_dependent_trait_objects)]
3
4// Check that the issue #33140 hack does not allow unintended things.
5
6// OK
ba9703b0 7trait Trait0 {}
0731742a
XL
8
9impl Trait0 for dyn Send {}
10impl Trait0 for dyn Send {}
11
12// Problem 1: associated types
13trait Trait1 {
14 fn my_fn(&self) {}
15}
16
17impl Trait1 for dyn Send {}
18impl Trait1 for dyn Send {}
19//~^ ERROR E0119
20
21// Problem 2: negative impl
ba9703b0 22trait Trait2 {}
0731742a
XL
23
24impl Trait2 for dyn Send {}
25impl !Trait2 for dyn Send {}
ba9703b0 26//~^ ERROR E0751
0731742a
XL
27
28// Problem 3: type parameter
ba9703b0 29trait Trait3<T: ?Sized> {}
0731742a
XL
30
31impl Trait3<dyn Sync> for dyn Send {}
32impl Trait3<dyn Sync> for dyn Send {}
33//~^ ERROR E0119
34
35// Problem 4a: not a trait object - generic
ba9703b0 36trait Trait4a {}
0731742a
XL
37
38impl<T: ?Sized> Trait4a for T {}
39impl Trait4a for dyn Send {}
40//~^ ERROR E0119
41
42// Problem 4b: not a trait object - misc
ba9703b0 43trait Trait4b {}
0731742a
XL
44
45impl Trait4b for () {}
46impl Trait4b for () {}
47//~^ ERROR E0119
48
49// Problem 4c: not a principal-less trait object
ba9703b0 50trait Trait4c {}
0731742a
XL
51
52impl Trait4c for dyn Trait1 + Send {}
53impl Trait4c for dyn Trait1 + Send {}
54//~^ ERROR E0119
55
56// Problem 4d: lifetimes
ba9703b0 57trait Trait4d {}
0731742a
XL
58
59impl<'a> Trait4d for dyn Send + 'a {}
60impl<'a> Trait4d for dyn Send + 'a {}
61//~^ ERROR E0119
62
0731742a 63// Problem 5: where-clauses
ba9703b0 64trait Trait5 {}
0731742a
XL
65
66impl Trait5 for dyn Send {}
67impl Trait5 for dyn Send where u32: Copy {}
68//~^ ERROR E0119
69
70fn main() {}