1 // Unit test for the "user substitutions" that are annotated on each
2 // node.
3 
4 #![allow(warnings)]
5 
6 enum SomeEnum<T> {
7     SomeVariant(T),
8     SomeOtherVariant,
9 }
10 
no_annot()11 fn no_annot() {
12     let c = 66;
13     SomeEnum::SomeVariant(&c);
14 }
15 
annot_underscore()16 fn annot_underscore() {
17     let c = 66;
18     SomeEnum::SomeVariant::<_>(&c);
19 }
20 
annot_reference_any_lifetime()21 fn annot_reference_any_lifetime() {
22     let c = 66;
23     SomeEnum::SomeVariant::<&u32>(&c);
24 }
25 
annot_reference_static_lifetime()26 fn annot_reference_static_lifetime() {
27     let c = 66;
28     SomeEnum::SomeVariant::<&'static u32>(&c); //~ ERROR
29 }
30 
annot_reference_named_lifetime<'a>(_d: &'a u32)31 fn annot_reference_named_lifetime<'a>(_d: &'a u32) {
32     let c = 66;
33     SomeEnum::SomeVariant::<&'a u32>(&c); //~ ERROR
34 }
35 
annot_reference_named_lifetime_ok<'a>(c: &'a u32)36 fn annot_reference_named_lifetime_ok<'a>(c: &'a u32) {
37     SomeEnum::SomeVariant::<&'a u32>(c);
38 }
39 
annot_reference_named_lifetime_in_closure<'a>(_: &'a u32)40 fn annot_reference_named_lifetime_in_closure<'a>(_: &'a u32) {
41     let _closure = || {
42         let c = 66;
43         SomeEnum::SomeVariant::<&'a u32>(&c); //~ ERROR
44     };
45 }
46 
annot_reference_named_lifetime_in_closure_ok<'a>(c: &'a u32)47 fn annot_reference_named_lifetime_in_closure_ok<'a>(c: &'a u32) {
48     let _closure = || {
49         SomeEnum::SomeVariant::<&'a u32>(c);
50     };
51 }
52 
main()53 fn main() { }
54