summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/non-existent-field-present-in-subfield-recursion-limit.rs
blob: 98b408daa022de8351b14b01ee1f730e4cf36f40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// In rustc_typeck::check::expr::no_such_field_err we recursively
// look in subfields for the field. This recursive search is limited
// in depth for compile-time reasons and to avoid infinite recursion
// in case of cycles. This file tests that the limit in the recursion
// depth is enforced.

struct Foo {
    first: Bar,
    second: u32,
    third: u32,
}

struct Bar {
    bar: C,
}

struct C {
    c: D,
}

struct D {
    test: E,
}

struct E {
    e: F,
}

struct F {
    f: u32,
}

fn main() {
    let f = F { f: 6 };
    let e = E { e: f };
    let d = D { test: e };
    let c = C { c: d };
    let bar = Bar { bar: c };
    let fooer = Foo { first: bar, second: 4, third: 5 };

    let test = fooer.f;
    //~^ ERROR no field
}