From 7788d293c4d65103f8fef81128d77a44cbb6df09 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 6 Nov 2017 07:53:43 -0800 Subject: [PATCH] Test:spread removes readonly from index signatures --- .../objectSpreadIndexSignature.errors.txt | 4 ++++ .../reference/objectSpreadIndexSignature.js | 6 ++++++ .../reference/objectSpreadIndexSignature.symbols | 11 +++++++++++ .../reference/objectSpreadIndexSignature.types | 16 ++++++++++++++++ .../types/spread/objectSpreadIndexSignature.ts | 4 ++++ 5 files changed, 41 insertions(+) diff --git a/tests/baselines/reference/objectSpreadIndexSignature.errors.txt b/tests/baselines/reference/objectSpreadIndexSignature.errors.txt index ee7425909c2..dede126d063 100644 --- a/tests/baselines/reference/objectSpreadIndexSignature.errors.txt +++ b/tests/baselines/reference/objectSpreadIndexSignature.errors.txt @@ -16,4 +16,8 @@ tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts(6,1): error T declare const b: boolean; indexed3 = { ...b ? indexed3 : undefined }; + + declare var roindex: { readonly [x:string]: number }; + var writable = { ...roindex }; + writable.a = 0; // should be ok. \ No newline at end of file diff --git a/tests/baselines/reference/objectSpreadIndexSignature.js b/tests/baselines/reference/objectSpreadIndexSignature.js index 283129036da..f8663fd836f 100644 --- a/tests/baselines/reference/objectSpreadIndexSignature.js +++ b/tests/baselines/reference/objectSpreadIndexSignature.js @@ -11,6 +11,10 @@ ii[1001]; declare const b: boolean; indexed3 = { ...b ? indexed3 : undefined }; + +declare var roindex: { readonly [x:string]: number }; +var writable = { ...roindex }; +writable.a = 0; // should be ok. //// [objectSpreadIndexSignature.js] @@ -30,3 +34,5 @@ var ii = __assign({}, indexed1, indexed2); // both have indexer, so i[1001]: number | boolean ii[1001]; indexed3 = __assign({}, b ? indexed3 : undefined); +var writable = __assign({}, roindex); +writable.a = 0; // should be ok. diff --git a/tests/baselines/reference/objectSpreadIndexSignature.symbols b/tests/baselines/reference/objectSpreadIndexSignature.symbols index d08cfff53ff..439463c4131 100644 --- a/tests/baselines/reference/objectSpreadIndexSignature.symbols +++ b/tests/baselines/reference/objectSpreadIndexSignature.symbols @@ -40,3 +40,14 @@ indexed3 = { ...b ? indexed3 : undefined }; >indexed3 : Symbol(indexed3, Decl(objectSpreadIndexSignature.ts, 2, 11)) >undefined : Symbol(undefined) +declare var roindex: { readonly [x:string]: number }; +>roindex : Symbol(roindex, Decl(objectSpreadIndexSignature.ts, 13, 11)) +>x : Symbol(x, Decl(objectSpreadIndexSignature.ts, 13, 33)) + +var writable = { ...roindex }; +>writable : Symbol(writable, Decl(objectSpreadIndexSignature.ts, 14, 3)) +>roindex : Symbol(roindex, Decl(objectSpreadIndexSignature.ts, 13, 11)) + +writable.a = 0; // should be ok. +>writable : Symbol(writable, Decl(objectSpreadIndexSignature.ts, 14, 3)) + diff --git a/tests/baselines/reference/objectSpreadIndexSignature.types b/tests/baselines/reference/objectSpreadIndexSignature.types index eff3b04b8f6..3ce4d00584b 100644 --- a/tests/baselines/reference/objectSpreadIndexSignature.types +++ b/tests/baselines/reference/objectSpreadIndexSignature.types @@ -50,3 +50,19 @@ indexed3 = { ...b ? indexed3 : undefined }; >indexed3 : { [n: string]: number; } >undefined : undefined +declare var roindex: { readonly [x:string]: number }; +>roindex : { readonly [x: string]: number; } +>x : string + +var writable = { ...roindex }; +>writable : { [x: string]: number; } +>{ ...roindex } : { [x: string]: number; } +>roindex : { readonly [x: string]: number; } + +writable.a = 0; // should be ok. +>writable.a = 0 : 0 +>writable.a : number +>writable : { [x: string]: number; } +>a : number +>0 : 0 + diff --git a/tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts b/tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts index 83649d465f1..13ddc4f71d3 100644 --- a/tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts +++ b/tests/cases/conformance/types/spread/objectSpreadIndexSignature.ts @@ -11,3 +11,7 @@ ii[1001]; declare const b: boolean; indexed3 = { ...b ? indexed3 : undefined }; + +declare var roindex: { readonly [x:string]: number }; +var writable = { ...roindex }; +writable.a = 0; // should be ok.