]> git.proxmox.com Git - rustc.git/blob - tests/ui/nll/user-annotations/adt-tuple-struct-calls.rs
New upstream version 1.68.2+dfsg1
[rustc.git] / tests / ui / nll / user-annotations / adt-tuple-struct-calls.rs
1 // Unit test for the "user substitutions" that are annotated on each
2 // node.
3
4 struct SomeStruct<T>(T);
5
6 fn no_annot() {
7 let c = 66;
8 let f = SomeStruct;
9 f(&c);
10 }
11
12 fn annot_underscore() {
13 let c = 66;
14 let f = SomeStruct::<_>;
15 f(&c);
16 }
17
18 fn annot_reference_any_lifetime() {
19 let c = 66;
20 let f = SomeStruct::<&u32>;
21 f(&c);
22 }
23
24 fn annot_reference_static_lifetime() {
25 let c = 66;
26 let f = SomeStruct::<&'static u32>;
27 f(&c); //~ ERROR
28 }
29
30 fn annot_reference_named_lifetime<'a>(_d: &'a u32) {
31 let c = 66;
32 let f = SomeStruct::<&'a u32>;
33 f(&c); //~ ERROR
34 }
35
36 fn annot_reference_named_lifetime_ok<'a>(c: &'a u32) {
37 let f = SomeStruct::<&'a u32>;
38 f(c);
39 }
40
41 fn annot_reference_named_lifetime_in_closure<'a>(_: &'a u32) {
42 let _closure = || {
43 let c = 66;
44 let f = SomeStruct::<&'a u32>;
45 f(&c); //~ ERROR
46 };
47 }
48
49 fn annot_reference_named_lifetime_across_closure<'a>(_: &'a u32) {
50 let f = SomeStruct::<&'a u32>;
51 let _closure = || {
52 let c = 66;
53 f(&c); //~ ERROR
54 };
55 }
56
57 fn annot_reference_named_lifetime_in_closure_ok<'a>(c: &'a u32) {
58 let _closure = || {
59 let f = SomeStruct::<&'a u32>;
60 f(c);
61 };
62 }
63
64 fn annot_reference_named_lifetime_across_closure_ok<'a>(c: &'a u32) {
65 let f = SomeStruct::<&'a u32>;
66 let _closure = || {
67 f(c);
68 };
69 }
70
71 fn main() { }