Skip to content

Commit 6c633e6

Browse files
committed
Accept new baselines
1 parent 7bbcbad commit 6c633e6

File tree

4 files changed

+88
-10
lines changed

4 files changed

+88
-10
lines changed

tests/baselines/reference/recursiveConditionalTypes.errors.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ tests/cases/compiler/recursiveConditionalTypes.ts(169,5): error TS2322: Type 'nu
222222
? A
223223
: _Enumerate<_PrependNextNum<A>, N> & number;
224224

225-
export type Enumerate<N extends number> = number extends N
225+
type Enumerate<N extends number> = number extends N
226226
? number
227227
: _Enumerate<[], N> extends (infer E)[]
228228
? E

tests/baselines/reference/recursiveConditionalTypes.js

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ type _Enumerate<A extends Array<unknown>, N extends number> = N extends A['lengt
160160
? A
161161
: _Enumerate<_PrependNextNum<A>, N> & number;
162162

163-
export type Enumerate<N extends number> = number extends N
163+
type Enumerate<N extends number> = number extends N
164164
? number
165165
: _Enumerate<[], N> extends (infer E)[]
166166
? E
@@ -172,6 +172,7 @@ function foo2<T extends unknown[]>(value: T): Enumerate<T['length']> {
172172

173173

174174
//// [recursiveConditionalTypes.js]
175+
"use strict";
175176
// Awaiting promises
176177
function f11(tx, ta, ux, ua) {
177178
ta = ua;
@@ -204,11 +205,88 @@ let five;
204205
function foo2(value) {
205206
return value.length; // Error
206207
}
207-
export {};
208208

209209

210210
//// [recursiveConditionalTypes.d.ts]
211+
declare type __Awaited<T> = T extends null | undefined ? T : T extends PromiseLike<infer U> ? __Awaited<U> : T;
212+
declare type MyPromise<T> = {
213+
then<U>(f: ((value: T) => U | PromiseLike<U>) | null | undefined): MyPromise<U>;
214+
};
215+
declare type InfinitePromise<T> = Promise<InfinitePromise<T>>;
216+
declare type P0 = __Awaited<Promise<string | Promise<MyPromise<number> | null> | undefined>>;
217+
declare type P1 = __Awaited<any>;
218+
declare type P2 = __Awaited<InfinitePromise<number>>;
219+
declare function f11<T, U extends T>(tx: T, ta: __Awaited<T>, ux: U, ua: __Awaited<U>): void;
220+
declare type Flatten<T extends readonly unknown[]> = T extends unknown[] ? _Flatten<T>[] : readonly _Flatten<T>[];
221+
declare type _Flatten<T> = T extends readonly (infer U)[] ? _Flatten<U> : T;
222+
declare type InfiniteArray<T> = InfiniteArray<T>[];
223+
declare type B0 = Flatten<string[][][]>;
224+
declare type B1 = Flatten<string[][] | readonly (number[] | boolean[][])[]>;
225+
declare type B2 = Flatten<InfiniteArray<string>>;
226+
declare type B3 = B2[0];
227+
declare type TupleOf<T, N extends number> = N extends N ? number extends N ? T[] : _TupleOf<T, N, []> : never;
228+
declare type _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>;
229+
declare type TT0 = TupleOf<string, 4>;
230+
declare type TT1 = TupleOf<number, 0 | 2 | 4>;
231+
declare type TT2 = TupleOf<number, number>;
232+
declare type TT3 = TupleOf<number, any>;
233+
declare type TT4 = TupleOf<number, 100>;
234+
declare type TT5 = TupleOf<number, 1000>;
235+
declare function f22<N extends number, M extends N>(tn: TupleOf<number, N>, tm: TupleOf<number, M>): void;
236+
declare function f23<T>(t: TupleOf<T, 3>): T;
237+
interface Box<T> {
238+
value: T;
239+
}
240+
declare type RecBox<T> = T | Box<RecBox<T>>;
241+
declare type InfBox<T> = Box<InfBox<T>>;
242+
declare function unbox<T>(box: RecBox<T>): T;
243+
declare type T1 = Box<string>;
244+
declare type T2 = Box<T1>;
245+
declare type T3 = Box<T2>;
246+
declare type T4 = Box<T3>;
247+
declare type T5 = Box<T4>;
248+
declare type T6 = Box<T5>;
249+
declare let b1: Box<Box<Box<Box<Box<Box<string>>>>>>;
250+
declare let b2: T6;
251+
declare let b3: InfBox<string>;
252+
declare let b4: {
253+
value: {
254+
value: {
255+
value: typeof b4;
256+
};
257+
};
258+
};
259+
declare type Box1<T> = {
260+
value: T;
261+
};
262+
declare type Box2<T> = {
263+
value: T;
264+
};
265+
declare function foo<T>(x: Box1<Box1<T>>): T;
266+
declare let z: Box2<Box2<string>>;
267+
declare type Intersect<U extends any[], R = unknown> = U extends [infer H, ...infer T] ? Intersect<T, R & H> : R;
268+
declare type QQ = Intersect<[string[], number[], 7]>;
269+
declare type Unpack1<T> = T extends (infer U)[] ? Unpack1<U> : T;
270+
declare type Unpack2<T> = T extends (infer U)[] ? Unpack2<U> : T;
271+
declare function f20<T, U extends T>(x: Unpack1<T>, y: Unpack2<T>): void;
272+
declare type Grow1<T extends unknown[], N extends number> = T['length'] extends N ? T : Grow1<[number, ...T], N>;
273+
declare type Grow2<T extends unknown[], N extends number> = T['length'] extends N ? T : Grow2<[string, ...T], N>;
274+
declare function f21<T extends number>(x: Grow1<[], T>, y: Grow2<[], T>): void;
275+
declare type ParseSuccess<R extends string> = {
276+
rest: R;
277+
};
278+
declare type ParseManyWhitespace<S extends string> = S extends ` ${infer R0}` ? ParseManyWhitespace<R0> extends ParseSuccess<infer R1> ? ParseSuccess<R1> : null : ParseSuccess<S>;
279+
declare type TP1 = ParseManyWhitespace<" foo">;
280+
declare type ParseManyWhitespace2<S extends string> = S extends ` ${infer R0}` ? Helper<ParseManyWhitespace2<R0>> : ParseSuccess<S>;
281+
declare type Helper<T> = T extends ParseSuccess<infer R> ? ParseSuccess<R> : null;
282+
declare type TP2 = ParseManyWhitespace2<" foo">;
283+
declare type NTuple<N extends number, Tup extends unknown[] = []> = Tup['length'] extends N ? Tup : NTuple<N, [...Tup, unknown]>;
284+
declare type Add<A extends number, B extends number> = [
285+
...NTuple<A>,
286+
...NTuple<B>
287+
]['length'];
288+
declare let five: Add<2, 3>;
211289
declare type _PrependNextNum<A extends Array<unknown>> = A['length'] extends infer T ? [T, ...A] extends [...infer X] ? X : never : never;
212290
declare type _Enumerate<A extends Array<unknown>, N extends number> = N extends A['length'] ? A : _Enumerate<_PrependNextNum<A>, N> & number;
213-
export declare type Enumerate<N extends number> = number extends N ? number : _Enumerate<[], N> extends (infer E)[] ? E : never;
214-
export {};
291+
declare type Enumerate<N extends number> = number extends N ? number : _Enumerate<[], N> extends (infer E)[] ? E : never;
292+
declare function foo2<T extends unknown[]>(value: T): Enumerate<T['length']>;

tests/baselines/reference/recursiveConditionalTypes.symbols

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -598,15 +598,15 @@ type _Enumerate<A extends Array<unknown>, N extends number> = N extends A['lengt
598598
>A : Symbol(A, Decl(recursiveConditionalTypes.ts, 157, 16))
599599
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 157, 41))
600600

601-
export type Enumerate<N extends number> = number extends N
601+
type Enumerate<N extends number> = number extends N
602602
>Enumerate : Symbol(Enumerate, Decl(recursiveConditionalTypes.ts, 159, 49))
603-
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 22))
604-
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 22))
603+
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 15))
604+
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 15))
605605

606606
? number
607607
: _Enumerate<[], N> extends (infer E)[]
608608
>_Enumerate : Symbol(_Enumerate, Decl(recursiveConditionalTypes.ts, 155, 12))
609-
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 22))
609+
>N : Symbol(N, Decl(recursiveConditionalTypes.ts, 161, 15))
610610
>E : Symbol(E, Decl(recursiveConditionalTypes.ts, 163, 38))
611611

612612
? E

tests/baselines/reference/recursiveConditionalTypes.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ type _Enumerate<A extends Array<unknown>, N extends number> = N extends A['lengt
376376
? A
377377
: _Enumerate<_PrependNextNum<A>, N> & number;
378378

379-
export type Enumerate<N extends number> = number extends N
379+
type Enumerate<N extends number> = number extends N
380380
>Enumerate : Enumerate<N>
381381

382382
? number

0 commit comments

Comments
 (0)