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