]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
0bf4aa26 | 2 | #![allow(unused_doc_comments)] |
fc512014 | 3 | #![feature(auto_traits)] |
ba9703b0 | 4 | #![feature(negative_impls)] |
abe05a73 XL |
5 | |
6 | auto trait Auto {} | |
abe05a73 XL |
7 | unsafe auto trait AutoUnsafe {} |
8 | ||
9 | impl !Auto for bool {} | |
10 | impl !AutoUnsafe for bool {} | |
11 | ||
12 | struct AutoBool(bool); | |
13 | ||
14 | impl Auto for AutoBool {} | |
15 | unsafe impl AutoUnsafe for AutoBool {} | |
16 | ||
17 | fn take_auto<T: Auto>(_: T) {} | |
18 | fn take_auto_unsafe<T: AutoUnsafe>(_: T) {} | |
19 | ||
20 | fn main() { | |
2c00a5a8 XL |
21 | // Parse inside functions. |
22 | auto trait AutoInner {} | |
23 | unsafe auto trait AutoUnsafeInner {} | |
24 | ||
abe05a73 XL |
25 | take_auto(0); |
26 | take_auto(AutoBool(true)); | |
27 | take_auto_unsafe(0); | |
28 | take_auto_unsafe(AutoBool(true)); | |
29 | ||
30 | /// Auto traits are allowed in trait object bounds. | |
dc9dc135 | 31 | let _: &(dyn Send + Auto) = &0; |
abe05a73 | 32 | } |