File: inferTypeConstraintInstantiationCircularity.symbols

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (254 lines) | stat: -rw-r--r-- 12,969 bytes parent folder | download | duplicates (3)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
=== tests/cases/compiler/inferTypeConstraintInstantiationCircularity.ts ===
type AMappedType<T> = { [KeyType in keyof T]: number };
>AMappedType : Symbol(AMappedType, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 0))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 17))
>KeyType : Symbol(KeyType, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 25))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 17))

type HasM = {
>HasM : Symbol(HasM, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 55))

  m: number;
>m : Symbol(m, Decl(inferTypeConstraintInstantiationCircularity.ts, 2, 13))

};

// Simplified repro from #48059

interface X1<
>X1 : Symbol(X1, Decl(inferTypeConstraintInstantiationCircularity.ts, 4, 2))

  T extends HasM,
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 8, 13))
>HasM : Symbol(HasM, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 55))

  Output = AMappedType<{ s: number; } & { [k in keyof T]: number; }>
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 9, 17))
>AMappedType : Symbol(AMappedType, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 0))
>s : Symbol(s, Decl(inferTypeConstraintInstantiationCircularity.ts, 10, 24))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 10, 43))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 8, 13))

> {
  tee: T;
>tee : Symbol(X1.tee, Decl(inferTypeConstraintInstantiationCircularity.ts, 11, 3))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 8, 13))

  output: Output;
>output : Symbol(X1.output, Decl(inferTypeConstraintInstantiationCircularity.ts, 12, 9))
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 9, 17))
}

type F1<T> = T extends X1<infer U> ? U : never;
>F1 : Symbol(F1, Decl(inferTypeConstraintInstantiationCircularity.ts, 14, 1))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 8))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 8))
>X1 : Symbol(X1, Decl(inferTypeConstraintInstantiationCircularity.ts, 4, 2))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 31))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 31))

// With default inlined

interface X2<
>X2 : Symbol(X2, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 47))

  T extends HasM,
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 20, 13))
>HasM : Symbol(HasM, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 55))

  Output
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 21, 17))

> {
  tee: T;
>tee : Symbol(X2.tee, Decl(inferTypeConstraintInstantiationCircularity.ts, 23, 3))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 20, 13))

  output: Output;
>output : Symbol(X2.output, Decl(inferTypeConstraintInstantiationCircularity.ts, 24, 9))
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 21, 17))
}

type F2<T> = T extends X2<infer U, AMappedType<{ s: number; } & { [k in keyof (infer U)]: number; }>> ? U : never;
>F2 : Symbol(F2, Decl(inferTypeConstraintInstantiationCircularity.ts, 26, 1))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 8))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 8))
>X2 : Symbol(X2, Decl(inferTypeConstraintInstantiationCircularity.ts, 16, 47))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 31), Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 84))
>AMappedType : Symbol(AMappedType, Decl(inferTypeConstraintInstantiationCircularity.ts, 0, 0))
>s : Symbol(s, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 48))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 67))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 31), Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 84))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 31), Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 84))

// Original repro

type Simplify<T> = {[KeyType in keyof T]: T[KeyType]};
>Simplify : Symbol(Simplify, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 114))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 14))
>KeyType : Symbol(KeyType, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 21))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 14))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 14))
>KeyType : Symbol(KeyType, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 21))

type optionalKeys<T extends object> = {
>optionalKeys : Symbol(optionalKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 54))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 34, 18))

    [k in keyof T]: undefined extends T[k] ? k : never;
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 35, 5))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 34, 18))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 34, 18))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 35, 5))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 35, 5))

}[keyof T];
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 34, 18))

type requiredKeys<T extends object> = Exclude<keyof T, optionalKeys<T>>;
>requiredKeys : Symbol(requiredKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 36, 11))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 38, 18))
>Exclude : Symbol(Exclude, Decl(lib.es5.d.ts, --, --))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 38, 18))
>optionalKeys : Symbol(optionalKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 54))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 38, 18))

export type addQuestionMarks<T extends object> = {
>addQuestionMarks : Symbol(addQuestionMarks, Decl(inferTypeConstraintInstantiationCircularity.ts, 38, 72))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 40, 29))

    [k in optionalKeys<T>]?: T[k];
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 41, 5))
>optionalKeys : Symbol(optionalKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 54))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 40, 29))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 40, 29))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 41, 5))

} & {
    [k in requiredKeys<T>]: T[k];
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 43, 5))
>requiredKeys : Symbol(requiredKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 36, 11))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 40, 29))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 40, 29))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 43, 5))

};

type ZodRawShape = {
>ZodRawShape : Symbol(ZodRawShape, Decl(inferTypeConstraintInstantiationCircularity.ts, 44, 2))

    [k: string]: ZodType<any>;
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 47, 5))
>ZodType : Symbol(ZodType, Decl(inferTypeConstraintInstantiationCircularity.ts, 48, 2))

};

interface ZodType<Output> {
>ZodType : Symbol(ZodType, Decl(inferTypeConstraintInstantiationCircularity.ts, 48, 2))
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 50, 18))

  _type: Output;
>_type : Symbol(ZodType._type, Decl(inferTypeConstraintInstantiationCircularity.ts, 50, 27))
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 50, 18))
}

interface ZodObject<
>ZodObject : Symbol(ZodObject, Decl(inferTypeConstraintInstantiationCircularity.ts, 52, 1))

  T extends ZodRawShape,
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
>ZodRawShape : Symbol(ZodRawShape, Decl(inferTypeConstraintInstantiationCircularity.ts, 44, 2))

  Output = Simplify<
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 55, 24))
>Simplify : Symbol(Simplify, Decl(inferTypeConstraintInstantiationCircularity.ts, 28, 114))
    {
      [k in optionalKeys<T>]?: T[k];
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 58, 7))
>optionalKeys : Symbol(optionalKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 32, 54))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 58, 7))

    } & {
      [k in requiredKeys<T>]: T[k];
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 60, 7))
>requiredKeys : Symbol(requiredKeys, Decl(inferTypeConstraintInstantiationCircularity.ts, 36, 11))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
>k : Symbol(k, Decl(inferTypeConstraintInstantiationCircularity.ts, 60, 7))
    }
  >
> extends ZodType<Output> {
>ZodType : Symbol(ZodType, Decl(inferTypeConstraintInstantiationCircularity.ts, 48, 2))
>Output : Symbol(Output, Decl(inferTypeConstraintInstantiationCircularity.ts, 55, 24))

  readonly _shape: T;
>_shape : Symbol(ZodObject._shape, Decl(inferTypeConstraintInstantiationCircularity.ts, 63, 27))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 54, 20))
}

type MyObject<T> = T extends ZodObject<infer U>
>MyObject : Symbol(MyObject, Decl(inferTypeConstraintInstantiationCircularity.ts, 65, 1))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 67, 14))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 67, 14))
>ZodObject : Symbol(ZodObject, Decl(inferTypeConstraintInstantiationCircularity.ts, 52, 1))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 67, 44))

  ? U extends ZodRawShape
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 67, 44))
>ZodRawShape : Symbol(ZodRawShape, Decl(inferTypeConstraintInstantiationCircularity.ts, 44, 2))

    ? U
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 67, 44))

    : never
  : never;

// Repro from #50479

type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>Value : Symbol(Value, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 10))
>BaseValue : Symbol(BaseValue, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 40))
>BaseValue : Symbol(BaseValue, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 40))

  id: string
>id : Symbol(id, Decl(inferTypeConstraintInstantiationCircularity.ts, 75, 65))
}

type Items<Type extends Cell = Cell> = {
>Items : Symbol(Items, Decl(inferTypeConstraintInstantiationCircularity.ts, 77, 1))
>Type : Symbol(Type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 11))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))

  type: Type
>type : Symbol(type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 40))
>Type : Symbol(Type, Decl(inferTypeConstraintInstantiationCircularity.ts, 79, 11))

  name: string
>name : Symbol(name, Decl(inferTypeConstraintInstantiationCircularity.ts, 80, 12))
}

type InferIOItemToJSType<T extends Items> =
>InferIOItemToJSType : Symbol(InferIOItemToJSType, Decl(inferTypeConstraintInstantiationCircularity.ts, 82, 1))
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 84, 25))
>Items : Symbol(Items, Decl(inferTypeConstraintInstantiationCircularity.ts, 77, 1))

  T extends { type: infer U }
>T : Symbol(T, Decl(inferTypeConstraintInstantiationCircularity.ts, 84, 25))
>type : Symbol(type, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 13))
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 25))

    ? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
>U : Symbol(U, Decl(inferTypeConstraintInstantiationCircularity.ts, 85, 25))
>Cell : Symbol(Cell, Decl(inferTypeConstraintInstantiationCircularity.ts, 71, 10))
>V : Symbol(V, Decl(inferTypeConstraintInstantiationCircularity.ts, 86, 26))

      ? V
>V : Symbol(V, Decl(inferTypeConstraintInstantiationCircularity.ts, 86, 26))

      : never
    : never