]> git.lizzy.rs Git - rust.git/blob - src/test/ui/rfc-2091-track-caller/tracked-trait-impls.rs
Rollup merge of #105674 - estebank:iterator-chains, r=oli-obk
[rust.git] / src / test / ui / rfc-2091-track-caller / tracked-trait-impls.rs
1 // run-pass
2
3 macro_rules! assert_expansion_site_is_tracked {
4     () => {{
5         let location = std::panic::Location::caller();
6         assert_eq!(location.file(), file!());
7         assert_ne!(location.line(), line!(), "line should be outside this fn");
8     }}
9 }
10
11 trait Tracked {
12     fn local_tracked(&self);
13
14     #[track_caller]
15     fn blanket_tracked(&self);
16
17     #[track_caller]
18     fn default_tracked(&self) {
19         assert_expansion_site_is_tracked!();
20     }
21 }
22
23 impl Tracked for () {
24     #[track_caller]
25     fn local_tracked(&self) {
26         assert_expansion_site_is_tracked!();
27     }
28
29     fn blanket_tracked(&self) {
30         assert_expansion_site_is_tracked!();
31     }
32 }
33
34 impl Tracked for bool {
35     #[track_caller]
36     fn local_tracked(&self) {
37         assert_expansion_site_is_tracked!();
38     }
39
40     fn blanket_tracked(&self) {
41         assert_expansion_site_is_tracked!();
42     }
43
44     fn default_tracked(&self) {
45         assert_expansion_site_is_tracked!();
46     }
47 }
48
49 impl Tracked for u8 {
50     #[track_caller]
51     fn local_tracked(&self) {
52         assert_expansion_site_is_tracked!();
53     }
54
55     fn blanket_tracked(&self) {
56         assert_expansion_site_is_tracked!();
57     }
58
59     #[track_caller]
60     fn default_tracked(&self) {
61         assert_expansion_site_is_tracked!();
62     }
63 }
64
65 fn main() {
66     ().local_tracked();
67     ().default_tracked();
68     ().blanket_tracked();
69
70     true.local_tracked();
71     true.default_tracked();
72     true.blanket_tracked();
73
74     0u8.local_tracked();
75     0u8.default_tracked();
76     0u8.blanket_tracked();
77 }