mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Accept new baselines
This commit is contained in:
@@ -25,9 +25,17 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(68,3): error TS232
|
||||
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS2322: Type '123' is not assignable to type 'Type[K]'.
|
||||
Type '123' is not assignable to type '123 & "some string"'.
|
||||
Type '123' is not assignable to type '"some string"'.
|
||||
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(126,1): error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; }>'.
|
||||
Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; }'.
|
||||
tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(128,1): error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ b: string; }>'.
|
||||
Property 'b' is missing in type '{ a: number; }' but required in type '{ b: string; }'.
|
||||
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; }>'.
|
||||
Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'.
|
||||
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; }>'.
|
||||
Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; b: string; }'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts (23 errors) ====
|
||||
==== tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts (27 errors) ====
|
||||
function f1(obj: { a: number, b: 0 | 1, c: string }, k0: 'a', k1: 'a' | 'b', k2: 'a' | 'b' | 'c') {
|
||||
obj[k0] = 1;
|
||||
obj[k0] = 2;
|
||||
@@ -194,4 +202,35 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
|
||||
// Repro from 31006
|
||||
|
||||
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
|
||||
|
||||
declare let da: Demo<{ a: number }>;
|
||||
declare let db: Demo<{ b: string }>;
|
||||
declare let dc: Demo<{ a: number, b: string }>;
|
||||
|
||||
da = db; // Error
|
||||
~~
|
||||
!!! error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; }>'.
|
||||
!!! error TS2322: Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; }'.
|
||||
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:122:24: 'a' is declared here.
|
||||
da = dc;
|
||||
db = da; // Error
|
||||
~~
|
||||
!!! error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ b: string; }>'.
|
||||
!!! error TS2322: Property 'b' is missing in type '{ a: number; }' but required in type '{ b: string; }'.
|
||||
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:123:24: 'b' is declared here.
|
||||
db = dc;
|
||||
dc = da; // Error
|
||||
~~
|
||||
!!! error TS2322: Type 'Demo<{ a: number; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
|
||||
!!! error TS2322: Property 'b' is missing in type '{ a: number; }' but required in type '{ a: number; b: string; }'.
|
||||
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:124:35: 'b' is declared here.
|
||||
dc = db; // Error
|
||||
~~
|
||||
!!! error TS2322: Type 'Demo<{ b: string; }>' is not assignable to type 'Demo<{ a: number; b: string; }>'.
|
||||
!!! error TS2322: Property 'a' is missing in type '{ b: string; }' but required in type '{ a: number; b: string; }'.
|
||||
!!! related TS2728 tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts:124:24: 'a' is declared here.
|
||||
|
||||
@@ -115,6 +115,21 @@ type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
|
||||
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
|
||||
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
|
||||
// Repro from 31006
|
||||
|
||||
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
|
||||
|
||||
declare let da: Demo<{ a: number }>;
|
||||
declare let db: Demo<{ b: string }>;
|
||||
declare let dc: Demo<{ a: number, b: string }>;
|
||||
|
||||
da = db; // Error
|
||||
da = dc;
|
||||
db = da; // Error
|
||||
db = dc;
|
||||
dc = da; // Error
|
||||
dc = db; // Error
|
||||
|
||||
|
||||
//// [keyofAndIndexedAccess2.js]
|
||||
@@ -190,3 +205,9 @@ export function getEntity(id, state) {
|
||||
function get123() {
|
||||
return 123; // Error
|
||||
}
|
||||
da = db; // Error
|
||||
da = dc;
|
||||
db = da; // Error
|
||||
db = dc;
|
||||
dc = da; // Error
|
||||
dc = db; // Error
|
||||
|
||||
@@ -434,3 +434,56 @@ type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
|
||||
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
|
||||
|
||||
// Repro from 31006
|
||||
|
||||
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
|
||||
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
|
||||
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
|
||||
>key : Symbol(key, Decl(keyofAndIndexedAccess2.ts, 119, 35))
|
||||
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
|
||||
>val : Symbol(val, Decl(keyofAndIndexedAccess2.ts, 119, 42))
|
||||
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 10))
|
||||
>K : Symbol(K, Decl(keyofAndIndexedAccess2.ts, 119, 16))
|
||||
|
||||
declare let da: Demo<{ a: number }>;
|
||||
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
|
||||
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
|
||||
>a : Symbol(a, Decl(keyofAndIndexedAccess2.ts, 121, 22))
|
||||
|
||||
declare let db: Demo<{ b: string }>;
|
||||
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
|
||||
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
|
||||
>b : Symbol(b, Decl(keyofAndIndexedAccess2.ts, 122, 22))
|
||||
|
||||
declare let dc: Demo<{ a: number, b: string }>;
|
||||
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
|
||||
>Demo : Symbol(Demo, Decl(keyofAndIndexedAccess2.ts, 115, 69))
|
||||
>a : Symbol(a, Decl(keyofAndIndexedAccess2.ts, 123, 22))
|
||||
>b : Symbol(b, Decl(keyofAndIndexedAccess2.ts, 123, 33))
|
||||
|
||||
da = db; // Error
|
||||
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
|
||||
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
|
||||
|
||||
da = dc;
|
||||
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
|
||||
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
|
||||
|
||||
db = da; // Error
|
||||
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
|
||||
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
|
||||
|
||||
db = dc;
|
||||
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
|
||||
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
|
||||
|
||||
dc = da; // Error
|
||||
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
|
||||
>da : Symbol(da, Decl(keyofAndIndexedAccess2.ts, 121, 11))
|
||||
|
||||
dc = db; // Error
|
||||
>dc : Symbol(dc, Decl(keyofAndIndexedAccess2.ts, 123, 11))
|
||||
>db : Symbol(db, Decl(keyofAndIndexedAccess2.ts, 122, 11))
|
||||
|
||||
|
||||
@@ -437,3 +437,53 @@ type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
|
||||
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
|
||||
>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>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>
|
||||
|
||||
// Repro from 31006
|
||||
|
||||
type Demo<T> = <K extends keyof T>(key: K, val: T[K]) => void;
|
||||
>Demo : Demo<T>
|
||||
>key : K
|
||||
>val : T[K]
|
||||
|
||||
declare let da: Demo<{ a: number }>;
|
||||
>da : Demo<{ a: number; }>
|
||||
>a : number
|
||||
|
||||
declare let db: Demo<{ b: string }>;
|
||||
>db : Demo<{ b: string; }>
|
||||
>b : string
|
||||
|
||||
declare let dc: Demo<{ a: number, b: string }>;
|
||||
>dc : Demo<{ a: number; b: string; }>
|
||||
>a : number
|
||||
>b : string
|
||||
|
||||
da = db; // Error
|
||||
>da = db : Demo<{ b: string; }>
|
||||
>da : Demo<{ a: number; }>
|
||||
>db : Demo<{ b: string; }>
|
||||
|
||||
da = dc;
|
||||
>da = dc : Demo<{ a: number; b: string; }>
|
||||
>da : Demo<{ a: number; }>
|
||||
>dc : Demo<{ a: number; b: string; }>
|
||||
|
||||
db = da; // Error
|
||||
>db = da : Demo<{ a: number; }>
|
||||
>db : Demo<{ b: string; }>
|
||||
>da : Demo<{ a: number; }>
|
||||
|
||||
db = dc;
|
||||
>db = dc : Demo<{ a: number; b: string; }>
|
||||
>db : Demo<{ b: string; }>
|
||||
>dc : Demo<{ a: number; b: string; }>
|
||||
|
||||
dc = da; // Error
|
||||
>dc = da : Demo<{ a: number; }>
|
||||
>dc : Demo<{ a: number; b: string; }>
|
||||
>da : Demo<{ a: number; }>
|
||||
|
||||
dc = db; // Error
|
||||
>dc = db : Demo<{ b: string; }>
|
||||
>dc : Demo<{ a: number; b: string; }>
|
||||
>db : Demo<{ b: string; }>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user