File: deeplyNestedCheck.types

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (123 lines) | stat: -rw-r--r-- 6,317 bytes parent folder | download | duplicates (4)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
=== tests/cases/compiler/deeplyNestedCheck.ts ===
// Repro from #14794

interface DataSnapshot<X = {}> {
  child(path: string): DataSnapshot;
>child : (path: string) => DataSnapshot
>path : string
}

interface Snapshot<T> extends DataSnapshot {
  child<U extends Extract<keyof T, string>>(path: U): Snapshot<T[U]>;
>child : <U extends Extract<keyof T, string>>(path: U) => Snapshot<T[U]>
>path : U
}

// Repro from 34619

interface A { b: B[] }
>b : B[]

interface B { c: C }
>c : C

interface C { d: D[] }
>d : D[]

interface D { e: E[] }
>e : E[]

interface E { f: F[] }
>f : F[]

interface F { g: G }
>g : G

interface G { h: H[] }
>h : H[]

interface H { i: string }
>i : string

const x: A = {
>x : A
>{  b: [    {      c: {        d: [          {            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          },        ],      },    },  ],} : { b: { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]; }

  b: [
>b : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]
>[    {      c: {        d: [          {            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          },        ],      },    },  ] : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }[]
    {
>{      c: {        d: [          {            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          },        ],      },    } : { c: { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }; }

      c: {
>c : { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }
>{        d: [          {            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          },        ],      } : { d: { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]; }

        d: [
>d : { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]
>[          {            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          },        ] : { e: { f: { g: { h: {}[]; }; }[]; }[]; }[]
          {
>{            e: [              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ],          } : { e: { f: { g: { h: {}[]; }; }[]; }[]; }

            e: [
>e : { f: { g: { h: {}[]; }; }[]; }[]
>[              {                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              },            ] : { f: { g: { h: {}[]; }; }[]; }[]
              {
>{                f: [                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ],              } : { f: { g: { h: {}[]; }; }[]; }

                f: [
>f : { g: { h: {}[]; }; }[]
>[                  {                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  },                ] : { g: { h: {}[]; }; }[]
                  {
>{                    g: {                      h: [                        {                          // i: '',                        },                      ],                    },                  } : { g: { h: {}[]; }; }

                    g: {
>g : { h: {}[]; }
>{                      h: [                        {                          // i: '',                        },                      ],                    } : { h: {}[]; }

                      h: [
>h : {}[]
>[                        {                          // i: '',                        },                      ] : {}[]
                        {
>{                          // i: '',                        } : {}

                          // i: '',
                        },
                      ],
                    },
                  },
                ],
              },
            ],
          },
        ],
      },
    },
  ],
};

// Repro from 34619

const a1: string[][][][][] = [[[[[42]]]]];
>a1 : string[][][][][]
>[[[[[42]]]]] : number[][][][][]
>[[[[42]]]] : number[][][][]
>[[[42]]] : number[][][]
>[[42]] : number[][]
>[42] : number[]
>42 : 42

const a2: string[][][][][][][][][][] = [[[[[[[[[[42]]]]]]]]]];
>a2 : string[][][][][][][][][][]
>[[[[[[[[[[42]]]]]]]]]] : number[][][][][][][][][][]
>[[[[[[[[[42]]]]]]]]] : number[][][][][][][][][]
>[[[[[[[[42]]]]]]]] : number[][][][][][][][]
>[[[[[[[42]]]]]]] : number[][][][][][][]
>[[[[[[42]]]]]] : number[][][][][][]
>[[[[[42]]]]] : number[][][][][]
>[[[[42]]]] : number[][][][]
>[[[42]]] : number[][][]
>[[42]] : number[][]
>[42] : number[]
>42 : 42