From fe66d9ef9fe9b5cadd1e9da50c8ba329cd2856c0 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 14 Nov 2016 16:23:40 -0800 Subject: [PATCH] Add spread tests and update rest tests --- .../conformance/types/rest/objectRest.ts | 7 ++++++- .../spread/objectSpreadComputedProperty.ts | 9 +++++++++ .../fourslash/renameObjectSpreadAssignment.ts | 20 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/cases/conformance/types/spread/objectSpreadComputedProperty.ts create mode 100644 tests/cases/fourslash/renameObjectSpreadAssignment.ts diff --git a/tests/cases/conformance/types/rest/objectRest.ts b/tests/cases/conformance/types/rest/objectRest.ts index f1a77b1c129..3f7be177c7b 100644 --- a/tests/cases/conformance/types/rest/objectRest.ts +++ b/tests/cases/conformance/types/rest/objectRest.ts @@ -1,5 +1,5 @@ // @target: es2015 -let o = { a: 1, b: 'no' } +var o = { a: 1, b: 'no' } var { ...clone } = o; var { a, ...justB } = o; var { a, b: renamed, ...empty } = o; @@ -31,3 +31,8 @@ class Removable { } var removable = new Removable(); var { removed, ...removableRest } = removable; + +let computed = 'b'; +let computed2 = 'a'; +var { [computed]: stillNotGreat, [computed2]: soSo, ...o } = o; +({ [computed]: stillNotGreat, [computed2]: soSo, ...o } = o); diff --git a/tests/cases/conformance/types/spread/objectSpreadComputedProperty.ts b/tests/cases/conformance/types/spread/objectSpreadComputedProperty.ts new file mode 100644 index 00000000000..7e2182a2f1d --- /dev/null +++ b/tests/cases/conformance/types/spread/objectSpreadComputedProperty.ts @@ -0,0 +1,9 @@ +// fixes #12200 +function f() { + let n: number = 12; + let m: number = 13; + let a: any = null; + const o1 = { ...{}, [n]: n }; + const o2 = { ...{}, [a]: n }; + const o3 = { [a]: n, ...{}, [n]: n, ...{}, [m]: m }; +} diff --git a/tests/cases/fourslash/renameObjectSpreadAssignment.ts b/tests/cases/fourslash/renameObjectSpreadAssignment.ts new file mode 100644 index 00000000000..9cf0b6ebf81 --- /dev/null +++ b/tests/cases/fourslash/renameObjectSpreadAssignment.ts @@ -0,0 +1,20 @@ +/// + +////interface A1 { a: number }; +////interface A2 { a?: number }; +////let [|a1|]: A1; +////let [|a2|]: A2; +////let a12 = { ...[|a1|], ...[|a2|] }; +const ranges = test.ranges(); +verify.assertHasRanges(ranges); + +// rename a1 +goTo.position(ranges[0].start); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, [ranges[0], ranges[2]]); +goTo.position(ranges[2].start); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, [ranges[0], ranges[2]]); +// rename a2 +goTo.position(ranges[1].start); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, [ranges[1], ranges[3]]); +goTo.position(ranges[3].start); +verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, [ranges[1], ranges[3]]);