1 // Unit test for the "user substitutions" that are annotated on each 2 // node. 3 4 struct SomeStruct<T>(T); 5 no_annot()6fn no_annot() { 7 let c = 66; 8 let f = SomeStruct; 9 f(&c); 10 } 11 annot_underscore()12fn annot_underscore() { 13 let c = 66; 14 let f = SomeStruct::<_>; 15 f(&c); 16 } 17 annot_reference_any_lifetime()18fn annot_reference_any_lifetime() { 19 let c = 66; 20 let f = SomeStruct::<&u32>; 21 f(&c); 22 } 23 annot_reference_static_lifetime()24fn annot_reference_static_lifetime() { 25 let c = 66; 26 let f = SomeStruct::<&'static u32>; 27 f(&c); //~ ERROR 28 } 29 annot_reference_named_lifetime<'a>(_d: &'a u32)30fn annot_reference_named_lifetime<'a>(_d: &'a u32) { 31 let c = 66; 32 let f = SomeStruct::<&'a u32>; 33 f(&c); //~ ERROR 34 } 35 annot_reference_named_lifetime_ok<'a>(c: &'a u32)36fn annot_reference_named_lifetime_ok<'a>(c: &'a u32) { 37 let f = SomeStruct::<&'a u32>; 38 f(c); 39 } 40 annot_reference_named_lifetime_in_closure<'a>(_: &'a u32)41fn 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 annot_reference_named_lifetime_across_closure<'a>(_: &'a u32)49fn 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 annot_reference_named_lifetime_in_closure_ok<'a>(c: &'a u32)57fn 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 annot_reference_named_lifetime_across_closure_ok<'a>(c: &'a u32)64fn 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 main()71fn main() { } 72