From de9f59a3019030493a49bbf2f32900574ec74591 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Fri, 11 Nov 2016 08:57:11 -0800 Subject: [PATCH] Test non-identifier rest in destructuring assignment --- tests/baselines/reference/objectRestNegative.errors.txt | 8 +++++++- tests/baselines/reference/objectRestNegative.js | 5 +++++ tests/cases/conformance/types/rest/objectRestNegative.ts | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/baselines/reference/objectRestNegative.errors.txt b/tests/baselines/reference/objectRestNegative.errors.txt index 1874570da7c..b8144e3209b 100644 --- a/tests/baselines/reference/objectRestNegative.errors.txt +++ b/tests/baselines/reference/objectRestNegative.errors.txt @@ -1,9 +1,10 @@ tests/cases/conformance/types/rest/objectRestNegative.ts(2,10): error TS2462: A rest element must be last in a destructuring pattern tests/cases/conformance/types/rest/objectRestNegative.ts(3,31): error TS2462: A rest element must be last in a destructuring pattern tests/cases/conformance/types/rest/objectRestNegative.ts(6,17): error TS2700: Rest types may only be created from object types. +tests/cases/conformance/types/rest/objectRestNegative.ts(11,9): error TS2701: An object rest element must be an identifier. -==== tests/cases/conformance/types/rest/objectRestNegative.ts (3 errors) ==== +==== tests/cases/conformance/types/rest/objectRestNegative.ts (4 errors) ==== let o = { a: 1, b: 'no' }; var { ...mustBeLast, a } = o; ~~~~~~~~~~ @@ -18,4 +19,9 @@ tests/cases/conformance/types/rest/objectRestNegative.ts(6,17): error TS2700: Re !!! error TS2700: Rest types may only be created from object types. return rest; } + + let rest: { b: string } + ({a, ...rest.b + rest.b} = o); + ~~~~~~~~~~~~~~~ +!!! error TS2701: An object rest element must be an identifier. \ No newline at end of file diff --git a/tests/baselines/reference/objectRestNegative.js b/tests/baselines/reference/objectRestNegative.js index b3b49740762..8692850dbdd 100644 --- a/tests/baselines/reference/objectRestNegative.js +++ b/tests/baselines/reference/objectRestNegative.js @@ -7,6 +7,9 @@ function generic(t: T) { let { x, ...rest } = t; return rest; } + +let rest: { b: string } +({a, ...rest.b + rest.b} = o); //// [objectRestNegative.js] @@ -25,3 +28,5 @@ function generic(t) { var x = t.x, rest = __rest(t, ["x"]); return rest; } +var rest; +(a = o.a, o, o); diff --git a/tests/cases/conformance/types/rest/objectRestNegative.ts b/tests/cases/conformance/types/rest/objectRestNegative.ts index 7296f2d274e..75cbe9a55e4 100644 --- a/tests/cases/conformance/types/rest/objectRestNegative.ts +++ b/tests/cases/conformance/types/rest/objectRestNegative.ts @@ -6,3 +6,6 @@ function generic(t: T) { let { x, ...rest } = t; return rest; } + +let rest: { b: string } +({a, ...rest.b + rest.b} = o);