From c3a93944aad2dace975b778df442ad93b13ee6e8 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 11 Dec 2018 15:12:54 -0800 Subject: [PATCH] Accept new baselines --- .../reference/keyofAndIndexedAccess.js | 8 ++--- .../reference/keyofAndIndexedAccess.symbols | 13 ++++++-- .../reference/keyofAndIndexedAccess.types | 21 ++++++------- .../keyofAndIndexedAccessErrors.errors.txt | 13 ++------ .../reference/keyofAndIndexedAccessErrors.js | 12 +------ .../keyofAndIndexedAccessErrors.symbols | 31 +++++-------------- .../keyofAndIndexedAccessErrors.types | 14 ++------- 7 files changed, 35 insertions(+), 77 deletions(-) diff --git a/tests/baselines/reference/keyofAndIndexedAccess.js b/tests/baselines/reference/keyofAndIndexedAccess.js index b7d794285fa..793313fdaa5 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.js +++ b/tests/baselines/reference/keyofAndIndexedAccess.js @@ -484,10 +484,10 @@ function onChangeGenericFunction(handler: Handler) { function updateIds, K extends string>( obj: T, idFields: K[], - idMapping: { [oldId: string]: string } + idMapping: Partial> ): Record { for (const idField of idFields) { - const newId = idMapping[obj[idField]]; + const newId: T[K] | undefined = idMapping[obj[idField]]; if (newId) { obj[idField] = newId; } @@ -1312,9 +1312,7 @@ declare type Handler = { declare function onChangeGenericFunction(handler: Handler): void; -declare function updateIds, K extends string>(obj: T, idFields: K[], idMapping: { - [oldId: string]: string; -}): Record; +declare function updateIds, K extends string>(obj: T, idFields: K[], idMapping: Partial>): Record; declare function updateIds2(obj: T, key: K, stringMap: { diff --git a/tests/baselines/reference/keyofAndIndexedAccess.symbols b/tests/baselines/reference/keyofAndIndexedAccess.symbols index 9881365b470..1d26f6dbec3 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.symbols +++ b/tests/baselines/reference/keyofAndIndexedAccess.symbols @@ -1767,9 +1767,14 @@ function updateIds, K extends string>( >idFields : Symbol(idFields, Decl(keyofAndIndexedAccess.ts, 483, 11)) >K : Symbol(K, Decl(keyofAndIndexedAccess.ts, 482, 47)) - idMapping: { [oldId: string]: string } + idMapping: Partial> >idMapping : Symbol(idMapping, Decl(keyofAndIndexedAccess.ts, 484, 18)) ->oldId : Symbol(oldId, Decl(keyofAndIndexedAccess.ts, 485, 18)) +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(keyofAndIndexedAccess.ts, 482, 19)) +>K : Symbol(K, Decl(keyofAndIndexedAccess.ts, 482, 47)) +>T : Symbol(T, Decl(keyofAndIndexedAccess.ts, 482, 19)) +>K : Symbol(K, Decl(keyofAndIndexedAccess.ts, 482, 47)) ): Record { >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) @@ -1779,8 +1784,10 @@ function updateIds, K extends string>( >idField : Symbol(idField, Decl(keyofAndIndexedAccess.ts, 487, 14)) >idFields : Symbol(idFields, Decl(keyofAndIndexedAccess.ts, 483, 11)) - const newId = idMapping[obj[idField]]; + const newId: T[K] | undefined = idMapping[obj[idField]]; >newId : Symbol(newId, Decl(keyofAndIndexedAccess.ts, 488, 13)) +>T : Symbol(T, Decl(keyofAndIndexedAccess.ts, 482, 19)) +>K : Symbol(K, Decl(keyofAndIndexedAccess.ts, 482, 47)) >idMapping : Symbol(idMapping, Decl(keyofAndIndexedAccess.ts, 484, 18)) >obj : Symbol(obj, Decl(keyofAndIndexedAccess.ts, 482, 66)) >idField : Symbol(idField, Decl(keyofAndIndexedAccess.ts, 487, 14)) diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index f4c47b26df0..bb395c562d6 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1731,7 +1731,7 @@ function onChangeGenericFunction(handler: Handler) { // Repro from #13285 function updateIds, K extends string>( ->updateIds : , K extends string>(obj: T, idFields: K[], idMapping: { [oldId: string]: string; }) => Record +>updateIds : , K extends string>(obj: T, idFields: K[], idMapping: Partial>) => Record obj: T, >obj : T @@ -1739,32 +1739,31 @@ function updateIds, K extends string>( idFields: K[], >idFields : K[] - idMapping: { [oldId: string]: string } ->idMapping : { [oldId: string]: string; } ->oldId : string + idMapping: Partial> +>idMapping : Partial> ): Record { for (const idField of idFields) { >idField : K >idFields : K[] - const newId = idMapping[obj[idField]]; ->newId : { [oldId: string]: string; }[T[K]] ->idMapping[obj[idField]] : { [oldId: string]: string; }[T[K]] ->idMapping : { [oldId: string]: string; } + const newId: T[K] | undefined = idMapping[obj[idField]]; +>newId : T[K] | undefined +>idMapping[obj[idField]] : Partial>[T[K]] +>idMapping : Partial> >obj[idField] : T[K] >obj : T >idField : K if (newId) { ->newId : { [oldId: string]: string; }[T[K]] +>newId : T[K] | undefined obj[idField] = newId; ->obj[idField] = newId : { [oldId: string]: string; }[T[K]] +>obj[idField] = newId : T[K] >obj[idField] : T[K] >obj : T >idField : K ->newId : { [oldId: string]: string; }[T[K]] +>newId : T[K] } } return obj; diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt b/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt index 68669463d95..b0eaac39c6d 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt @@ -66,10 +66,9 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(123,5): error tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(140,5): error TS2322: Type '42' is not assignable to type 'T[K]'. tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(141,5): error TS2322: Type '"hello"' is not assignable to type 'T[K]'. tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(142,5): error TS2322: Type 'number[]' is not assignable to type 'T[K]'. -tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(158,9): error TS2322: Type '"hello"' is not assignable to type 'Record[K]'. -==== tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts (42 errors) ==== +==== tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts (41 errors) ==== class Shape { name: string; width: number; @@ -329,15 +328,7 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(158,9): error let x: Partial>[K] = "hello"; } - // We simplify indexed accesses applied to mapped types up to five levels deep - function f31() { - let x: Partial>>>>[K] = "hello"; - } - - function f32() { - let x: Partial>>>>>[K] = "hello"; - ~ -!!! error TS2322: Type '"hello"' is not assignable to type 'Record[K]'. + let x: Partial>>>>>>>[K] = "hello"; } \ No newline at end of file diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.js b/tests/baselines/reference/keyofAndIndexedAccessErrors.js index 0cf77e79ba6..f262f9a0d3c 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.js +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.js @@ -149,14 +149,8 @@ function f30() { let x: Partial>[K] = "hello"; } -// We simplify indexed accesses applied to mapped types up to five levels deep - function f31() { - let x: Partial>>>>[K] = "hello"; -} - -function f32() { - let x: Partial>>>>>[K] = "hello"; + let x: Partial>>>>>>>[K] = "hello"; } @@ -235,10 +229,6 @@ function test1(t, k) { function f30() { var x = "hello"; } -// We simplify indexed accesses applied to mapped types up to five levels deep function f31() { var x = "hello"; } -function f32() { - var x = "hello"; -} diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.symbols b/tests/baselines/reference/keyofAndIndexedAccessErrors.symbols index 3f32679a813..1dd7c0d5648 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.symbols +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.symbols @@ -502,40 +502,23 @@ function f30() { >K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 146, 15)) } -// We simplify indexed accesses applied to mapped types up to five levels deep - function f31() { >f31 : Symbol(f31, Decl(keyofAndIndexedAccessErrors.ts, 148, 1)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 152, 13)) ->K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 152, 15)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 152, 13)) +>T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 150, 13)) +>K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 150, 15)) +>T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 150, 13)) - let x: Partial>>>>[K] = "hello"; ->x : Symbol(x, Decl(keyofAndIndexedAccessErrors.ts, 153, 7)) + let x: Partial>>>>>>>[K] = "hello"; +>x : Symbol(x, Decl(keyofAndIndexedAccessErrors.ts, 151, 7)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) ->Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 152, 13)) ->K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 152, 15)) -} - -function f32() { ->f32 : Symbol(f32, Decl(keyofAndIndexedAccessErrors.ts, 154, 1)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 156, 13)) ->K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 156, 15)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 156, 13)) - - let x: Partial>>>>>[K] = "hello"; ->x : Symbol(x, Decl(keyofAndIndexedAccessErrors.ts, 157, 7)) ->Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) ->Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) ->T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 156, 13)) ->K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 156, 15)) +>T : Symbol(T, Decl(keyofAndIndexedAccessErrors.ts, 150, 13)) +>K : Symbol(K, Decl(keyofAndIndexedAccessErrors.ts, 150, 15)) } diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.types b/tests/baselines/reference/keyofAndIndexedAccessErrors.types index b9d17df0341..90df0e687a0 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.types +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.types @@ -475,21 +475,11 @@ function f30() { >"hello" : "hello" } -// We simplify indexed accesses applied to mapped types up to five levels deep - function f31() { >f31 : () => void - let x: Partial>>>>[K] = "hello"; ->x : Partial>>>>[K] ->"hello" : "hello" -} - -function f32() { ->f32 : () => void - - let x: Partial>>>>>[K] = "hello"; ->x : Partial>>>>>[K] + let x: Partial>>>>>>>[K] = "hello"; +>x : Partial>>>>>>>[K] >"hello" : "hello" }