Skip to content

Commit 34feb07

Browse files
committed
Accept new baselines
1 parent fda21f1 commit 34feb07

File tree

4 files changed

+164
-1
lines changed

4 files changed

+164
-1
lines changed

tests/baselines/reference/keyofAndIndexedAccess2.errors.txt

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,17 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(68,3): error TS232
2525
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS2322: Type '123' is not assignable to type 'Type[K]'.
2626
Type '123' is not assignable to type '123 & "some string"'.
2727
Type '123' is not assignable to type '"some string"'.
28+
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(126,1): error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; }>'.
29+
Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; }'.
30+
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(128,1): error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ b: string; }>'.
31+
Property 'b' is missing in type '{ a: number; }' but required in type '{ b: string; }'.
32+
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(130,1): error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
33+
Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'.
34+
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(131,1): error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
35+
Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; b: string; }'.
2836

2937

30-
==== tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts (23 errors) ====
38+
==== tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts (27 errors) ====
3139
function f1(obj: { a: number, b: 0 | 1, c: string }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') {
3240
obj[k0] = 1;
3341
obj[k0] = 2;
@@ -194,4 +202,35 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
194202
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
195203
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
196204
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
205+
206+
// Repro from 31006
207+
208+
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
209+
210+
declare let da: Demo<{ a: number }>;
211+
declare let db: Demo<{ b: string }>;
212+
declare let dc: Demo<{ a: number, b: string }>;
213+
214+
da = db; // Error
215+
~~
216+
!!! error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; }>'.
217+
!!! error TS2322: Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; }'.
218+
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:122:24: 'a' is declared here.
219+
da = dc;
220+
db = da; // Error
221+
~~
222+
!!! error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ b: string; }>'.
223+
!!! error TS2322: Property 'b' is missing in type '{ a: number; }' but required in type '{ b: string; }'.
224+
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:123:24: 'b' is declared here.
225+
db = dc;
226+
dc = da; // Error
227+
~~
228+
!!! error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
229+
!!! error TS2322: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'.
230+
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:124:35: 'b' is declared here.
231+
dc = db; // Error
232+
~~
233+
!!! error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
234+
!!! error TS2322: Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; b: string; }'.
235+
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:124:24: 'a' is declared here.
197236

tests/baselines/reference/keyofAndIndexedAccess2.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,21 @@ type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
115115
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
116116
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
117117
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
118+
119+
// Repro from 31006
120+
121+
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
122+
123+
declare let da: Demo<{ a: number }>;
124+
declare let db: Demo<{ b: string }>;
125+
declare let dc: Demo<{ a: number, b: string }>;
126+
127+
da = db; // Error
128+
da = dc;
129+
db = da; // Error
130+
db = dc;
131+
dc = da; // Error
132+
dc = db; // Error
118133

119134

120135
//// [keyofAndIndexedAccess2.js]
@@ -190,3 +205,9 @@ export function getEntity(id, state) {
190205
function get123() {
191206
return 123; // Error
192207
}
208+
da = db; // Error
209+
da = dc;
210+
db = da; // Error
211+
db = dc;
212+
dc = da; // Error
213+
dc = db; // Error

tests/baselines/reference/keyofAndIndexedAccess2.symbols

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,3 +434,56 @@ type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
434434
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
435435
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
436436

437+
// Repro from 31006
438+
439+
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
440+
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
441+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
442+
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
443+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
444+
>key : Symbol(key, Decl(keyofAndIndexedAccess2.ts, 119, 35))
445+
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
446+
>val : Symbol(val, Decl(keyofAndIndexedAccess2.ts, 119, 42))
447+
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
448+
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
449+
450+
declare let da: Demo<{ a: number }>;
451+
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
452+
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
453+
>a : Symbol(a, Decl(keyofAndIndexedAccess2.ts, 121, 22))
454+
455+
declare let db: Demo<{ b: string }>;
456+
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
457+
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
458+
>b : Symbol(b, Decl(keyofAndIndexedAccess2.ts, 122, 22))
459+
460+
declare let dc: Demo<{ a: number, b: string }>;
461+
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
462+
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
463+
>a : Symbol(a, Decl(keyofAndIndexedAccess2.ts, 123, 22))
464+
>b : Symbol(b, Decl(keyofAndIndexedAccess2.ts, 123, 33))
465+
466+
da = db; // Error
467+
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
468+
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
469+
470+
da = dc;
471+
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
472+
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
473+
474+
db = da; // Error
475+
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
476+
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
477+
478+
db = dc;
479+
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
480+
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
481+
482+
dc = da; // Error
483+
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
484+
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
485+
486+
dc = db; // Error
487+
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
488+
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
489+

tests/baselines/reference/keyofAndIndexedAccess2.types

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,3 +437,53 @@ type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
437437
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
438438
>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>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>
439439

440+
// Repro from 31006
441+
442+
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
443+
>Demo : Demo<T>
444+
>key : K
445+
>val : T[K]
446+
447+
declare let da: Demo<{ a: number }>;
448+
>da : Demo<{ a: number; }>
449+
>a : number
450+
451+
declare let db: Demo<{ b: string }>;
452+
>db : Demo<{ b: string; }>
453+
>b : string
454+
455+
declare let dc: Demo<{ a: number, b: string }>;
456+
>dc : Demo<{ a: number; b: string; }>
457+
>a : number
458+
>b : string
459+
460+
da = db; // Error
461+
>da = db : Demo<{ b: string; }>
462+
>da : Demo<{ a: number; }>
463+
>db : Demo<{ b: string; }>
464+
465+
da = dc;
466+
>da = dc : Demo<{ a: number; b: string; }>
467+
>da : Demo<{ a: number; }>
468+
>dc : Demo<{ a: number; b: string; }>
469+
470+
db = da; // Error
471+
>db = da : Demo<{ a: number; }>
472+
>db : Demo<{ b: string; }>
473+
>da : Demo<{ a: number; }>
474+
475+
db = dc;
476+
>db = dc : Demo<{ a: number; b: string; }>
477+
>db : Demo<{ b: string; }>
478+
>dc : Demo<{ a: number; b: string; }>
479+
480+
dc = da; // Error
481+
>dc = da : Demo<{ a: number; }>
482+
>dc : Demo<{ a: number; b: string; }>
483+
>da : Demo<{ a: number; }>
484+
485+
dc = db; // Error
486+
>dc = db : Demo<{ b: string; }>
487+
>dc : Demo<{ a: number; b: string; }>
488+
>db : Demo<{ b: string; }>
489+

0 commit comments

Comments
 (0)