From 32568b3fc2f6a33b739db0251b034fb36a893e17 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 21 Dec 2016 09:45:04 -0800 Subject: [PATCH 1/2] Test case when module member is object spread pattern --- .../unusedLocalsAndObjectSpread2.errors.txt | 35 ++++++++++++++++++ .../reference/unusedLocalsAndObjectSpread2.js | 37 +++++++++++++++++++ .../compiler/unusedLocalsAndObjectSpread2.ts | 18 +++++++++ 3 files changed, 90 insertions(+) create mode 100644 tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt create mode 100644 tests/baselines/reference/unusedLocalsAndObjectSpread2.js create mode 100644 tests/cases/compiler/unusedLocalsAndObjectSpread2.ts diff --git a/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt b/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt new file mode 100644 index 0000000000000..0908f5ce3b9c0 --- /dev/null +++ b/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt @@ -0,0 +1,35 @@ +tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(4,5): error TS6133: 'children' is declared but never used. +tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(5,13): error TS6133: '_a' is declared but never used. +tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(6,6): error TS6133: 'rest' is declared but never used. +tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(9,10): error TS6133: 'foo' is declared but never used. +tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(13,8): error TS6133: 'rest' is declared but never used. + + +==== tests/cases/compiler/unusedLocalsAndObjectSpread2.ts (5 errors) ==== + + declare let props: any; + const { + children, // here! + ~~~~~~~~ +!!! error TS6133: 'children' is declared but never used. + active: _a, // here! + ~~ +!!! error TS6133: '_a' is declared but never used. + ...rest, + ~~~~ +!!! error TS6133: 'rest' is declared but never used. + } = props; + + function foo() { + ~~~ +!!! error TS6133: 'foo' is declared but never used. + const { + children, + active: _a, + ...rest, + ~~~~ +!!! error TS6133: 'rest' is declared but never used. + } = props; + } + + export const asdf = 123; \ No newline at end of file diff --git a/tests/baselines/reference/unusedLocalsAndObjectSpread2.js b/tests/baselines/reference/unusedLocalsAndObjectSpread2.js new file mode 100644 index 0000000000000..e6cd890abb7c9 --- /dev/null +++ b/tests/baselines/reference/unusedLocalsAndObjectSpread2.js @@ -0,0 +1,37 @@ +//// [unusedLocalsAndObjectSpread2.ts] + +declare let props: any; +const { + children, // here! + active: _a, // here! + ...rest, +} = props; + +function foo() { + const { + children, + active: _a, + ...rest, + } = props; +} + +export const asdf = 123; + +//// [unusedLocalsAndObjectSpread2.js] +"use strict"; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) + t[p[i]] = s[p[i]]; + return t; +}; +var children = props.children, // here! +_a = props.active, // here! +rest = __rest(props, ["children", "active"]); +function foo() { + var children = props.children, _a = props.active, rest = __rest(props, ["children", "active"]); +} +exports.asdf = 123; diff --git a/tests/cases/compiler/unusedLocalsAndObjectSpread2.ts b/tests/cases/compiler/unusedLocalsAndObjectSpread2.ts new file mode 100644 index 0000000000000..e55c2042a4181 --- /dev/null +++ b/tests/cases/compiler/unusedLocalsAndObjectSpread2.ts @@ -0,0 +1,18 @@ +//@noUnusedLocals:true + +declare let props: any; +const { + children, // here! + active: _a, // here! + ...rest, +} = props; + +function foo() { + const { + children, + active: _a, + ...rest, + } = props; +} + +export const asdf = 123; \ No newline at end of file From 14cce292506b29aa88d26c0ad9ca94d7fb32e6d8 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 21 Dec 2016 09:45:33 -0800 Subject: [PATCH 2/2] Do not report error on unused removed property from object spread Fixes #13076 --- src/compiler/checker.ts | 2 +- .../reference/unusedLocalsAndObjectSpread2.errors.txt | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 36b952dd046fa..d25c010ccfb74 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -16891,7 +16891,7 @@ namespace ts { if (!local.isReferenced && !local.exportSymbol) { for (const declaration of local.declarations) { if (!isAmbientModule(declaration)) { - error(declaration.name, Diagnostics._0_is_declared_but_never_used, local.name); + errorUnusedLocal(declaration.name, local.name); } } } diff --git a/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt b/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt index 0908f5ce3b9c0..2d1c36d3cbfda 100644 --- a/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt +++ b/tests/baselines/reference/unusedLocalsAndObjectSpread2.errors.txt @@ -1,20 +1,14 @@ -tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(4,5): error TS6133: 'children' is declared but never used. -tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(5,13): error TS6133: '_a' is declared but never used. tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(6,6): error TS6133: 'rest' is declared but never used. tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(9,10): error TS6133: 'foo' is declared but never used. tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(13,8): error TS6133: 'rest' is declared but never used. -==== tests/cases/compiler/unusedLocalsAndObjectSpread2.ts (5 errors) ==== +==== tests/cases/compiler/unusedLocalsAndObjectSpread2.ts (3 errors) ==== declare let props: any; const { children, // here! - ~~~~~~~~ -!!! error TS6133: 'children' is declared but never used. active: _a, // here! - ~~ -!!! error TS6133: '_a' is declared but never used. ...rest, ~~~~ !!! error TS6133: 'rest' is declared but never used.