Skip to content

Commit 462caf8

Browse files
committed
Accept new baselines
1 parent 4d0244c commit 462caf8

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed

tests/baselines/reference/keyofAndIndexedAccess2.errors.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,11 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
187187
!!! error TS2322: Type '123' is not assignable to type '123 & "some string"'.
188188
!!! error TS2322: Type '123' is not assignable to type '"some string"'.
189189
}
190+
191+
// Repro from #30920
192+
193+
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
194+
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
195+
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
196+
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
190197

tests/baselines/reference/keyofAndIndexedAccess2.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,13 @@ interface Type {
108108
function get123<K extends keyof Type>(): Type[K] {
109109
return 123; // Error
110110
}
111+
112+
// Repro from #30920
113+
114+
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
115+
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
116+
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
117+
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
111118

112119

113120
//// [keyofAndIndexedAccess2.js]

tests/baselines/reference/keyofAndIndexedAccess2.symbols

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,3 +388,49 @@ function get123<K extends keyof Type>(): Type[K] {
388388
return 123; // Error
389389
}
390390

391+
// Repro from #30920
392+
393+
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
394+
>StrictExtract : Symbol(StrictExtract, Decl(keyofAndIndexedAccess2.ts, 108, 1))
395+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
396+
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
397+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
398+
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
399+
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 112, 21))
400+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
401+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 19))
402+
403+
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
404+
>StrictExclude : Symbol(StrictExclude, Decl(keyofAndIndexedAccess2.ts, 112, 73))
405+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
406+
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 113, 21))
407+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
408+
>StrictExtract : Symbol(StrictExtract, Decl(keyofAndIndexedAccess2.ts, 108, 1))
409+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
410+
>U : Symbol(U, Decl(keyofAndIndexedAccess2.ts, 113, 21))
411+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 113, 19))
412+
413+
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
414+
>A : Symbol(A, Decl(keyofAndIndexedAccess2.ts, 113, 69))
415+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
416+
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 114, 15))
417+
>P : Symbol(P, Decl(keyofAndIndexedAccess2.ts, 114, 23))
418+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
419+
>P : Symbol(P, Decl(keyofAndIndexedAccess2.ts, 114, 23))
420+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
421+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 114, 7))
422+
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 114, 15))
423+
424+
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
425+
>B : Symbol(B, Decl(keyofAndIndexedAccess2.ts, 114, 62))
426+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
427+
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
428+
>A : Symbol(A, Decl(keyofAndIndexedAccess2.ts, 113, 69))
429+
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
430+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
431+
>StrictExclude : Symbol(StrictExclude, Decl(keyofAndIndexedAccess2.ts, 112, 73))
432+
>B : Symbol(B, Decl(keyofAndIndexedAccess2.ts, 114, 62))
433+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
434+
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
435+
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
436+

tests/baselines/reference/keyofAndIndexedAccess2.types

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,3 +423,17 @@ function get123<K extends keyof Type>(): Type[K] {
423423
>123 : 123
424424
}
425425

426+
// Repro from #30920
427+
428+
type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
429+
>StrictExtract : StrictExtract<T, U>
430+
431+
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
432+
>StrictExclude : StrictExclude<T, U>
433+
434+
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
435+
>A : A<T>
436+
437+
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
438+
>B : A<{ [Q in keyof T]: StrictExclude<A<{ [Q in keyof T[Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<any>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>
439+

0 commit comments

Comments
 (0)