From 2f646daf0ab38c10e2149507f2497204f2eb09f9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 28 Aug 2017 10:53:11 -0700 Subject: [PATCH] Move lone test case into central test file --- .../indexedAccessRelation2.errors.txt | 18 ----------------- .../reference/indexedAccessRelation2.js | 19 ------------------ .../keyofAndIndexedAccessErrors.errors.txt | 20 +++++++++++++++++-- .../reference/keyofAndIndexedAccessErrors.js | 19 +++++++++++++++++- .../cases/compiler/indexedAccessRelation2.ts | 8 -------- .../keyof/keyofAndIndexedAccessErrors.ts | 11 +++++++++- 6 files changed, 46 insertions(+), 49 deletions(-) delete mode 100644 tests/baselines/reference/indexedAccessRelation2.errors.txt delete mode 100644 tests/baselines/reference/indexedAccessRelation2.js delete mode 100644 tests/cases/compiler/indexedAccessRelation2.ts diff --git a/tests/baselines/reference/indexedAccessRelation2.errors.txt b/tests/baselines/reference/indexedAccessRelation2.errors.txt deleted file mode 100644 index b208e92250f..00000000000 --- a/tests/baselines/reference/indexedAccessRelation2.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -tests/cases/compiler/indexedAccessRelation2.ts(4,9): error TS2322: Type 'keyof T' is not assignable to type 'K'. -tests/cases/compiler/indexedAccessRelation2.ts(5,9): error TS2322: Type 'T[keyof T]' is not assignable to type 'T[K]'. - - -==== tests/cases/compiler/indexedAccessRelation2.ts (2 errors) ==== - // Repro from #17166 - function f(obj: T, k: K, value: T[K]): void { - for (let key in obj) { - k = key // error, keyof T =/=> K - ~ -!!! error TS2322: Type 'keyof T' is not assignable to type 'K'. - value = obj[key]; // error, T[keyof T] =/=> T[K] - ~~~~~ -!!! error TS2322: Type 'T[keyof T]' is not assignable to type 'T[K]'. - } - } - - \ No newline at end of file diff --git a/tests/baselines/reference/indexedAccessRelation2.js b/tests/baselines/reference/indexedAccessRelation2.js deleted file mode 100644 index 39b093ef3f7..00000000000 --- a/tests/baselines/reference/indexedAccessRelation2.js +++ /dev/null @@ -1,19 +0,0 @@ -//// [indexedAccessRelation2.ts] -// Repro from #17166 -function f(obj: T, k: K, value: T[K]): void { - for (let key in obj) { - k = key // error, keyof T =/=> K - value = obj[key]; // error, T[keyof T] =/=> T[K] - } -} - - - -//// [indexedAccessRelation2.js] -// Repro from #17166 -function f(obj, k, value) { - for (var key in obj) { - k = key; // error, keyof T =/=> K - value = obj[key]; // error, T[keyof T] =/=> T[K] - } -} diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt b/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt index 0634c3419e0..2981cb0366d 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.errors.txt @@ -27,9 +27,11 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(76,5): error Type 'T' is not assignable to type 'T & U'. Type 'T' is not assignable to type 'U'. tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(77,5): error TS2322: Type 'keyof (T & U)' is not assignable to type 'keyof (T | U)'. +tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(84,9): error TS2322: Type 'keyof T' is not assignable to type 'K'. +tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(85,9): error TS2322: Type 'T[keyof T]' is not assignable to type 'T[K]'. -==== tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts (25 errors) ==== +==== tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts (27 errors) ==== class Shape { name: string; width: number; @@ -162,4 +164,18 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts(77,5): error ~~ !!! error TS2322: Type 'keyof (T & U)' is not assignable to type 'keyof (T | U)'. k2 = k1; - } \ No newline at end of file + } + + // Repro from #17166 + function f3(obj: T, k: K, value: T[K]): void { + for (let key in obj) { + k = key // error, keyof T =/=> K + ~ +!!! error TS2322: Type 'keyof T' is not assignable to type 'K'. + value = obj[key]; // error, T[keyof T] =/=> T[K] + ~~~~~ +!!! error TS2322: Type 'T[keyof T]' is not assignable to type 'T[K]'. + } + } + + \ No newline at end of file diff --git a/tests/baselines/reference/keyofAndIndexedAccessErrors.js b/tests/baselines/reference/keyofAndIndexedAccessErrors.js index 838a3a6a86b..2a1042cf4ee 100644 --- a/tests/baselines/reference/keyofAndIndexedAccessErrors.js +++ b/tests/baselines/reference/keyofAndIndexedAccessErrors.js @@ -77,7 +77,17 @@ function f20(k1: keyof (T | U), k2: keyof (T & U), o1: T | U, o2: T & U) { o2 = o1; // Error k1 = k2; // Error k2 = k1; -} +} + +// Repro from #17166 +function f3(obj: T, k: K, value: T[K]): void { + for (let key in obj) { + k = key // error, keyof T =/=> K + value = obj[key]; // error, T[keyof T] =/=> T[K] + } +} + + //// [keyofAndIndexedAccessErrors.js] var Shape = /** @class */ (function () { @@ -109,3 +119,10 @@ function f20(k1, k2, o1, o2) { k1 = k2; // Error k2 = k1; } +// Repro from #17166 +function f3(obj, k, value) { + for (var key in obj) { + k = key; // error, keyof T =/=> K + value = obj[key]; // error, T[keyof T] =/=> T[K] + } +} diff --git a/tests/cases/compiler/indexedAccessRelation2.ts b/tests/cases/compiler/indexedAccessRelation2.ts deleted file mode 100644 index 736651099dc..00000000000 --- a/tests/cases/compiler/indexedAccessRelation2.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Repro from #17166 -function f(obj: T, k: K, value: T[K]): void { - for (let key in obj) { - k = key // error, keyof T =/=> K - value = obj[key]; // error, T[keyof T] =/=> T[K] - } -} - diff --git a/tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts b/tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts index cbbc9a52200..ffc5076831a 100644 --- a/tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts +++ b/tests/cases/conformance/types/keyof/keyofAndIndexedAccessErrors.ts @@ -76,4 +76,13 @@ function f20(k1: keyof (T | U), k2: keyof (T & U), o1: T | U, o2: T & U) { o2 = o1; // Error k1 = k2; // Error k2 = k1; -} \ No newline at end of file +} + +// Repro from #17166 +function f3(obj: T, k: K, value: T[K]): void { + for (let key in obj) { + k = key // error, keyof T =/=> K + value = obj[key]; // error, T[keyof T] =/=> T[K] + } +} +