Skip to content

Commit 74a9924

Browse files
authored
Merge pull request #13100 from Microsoft/unusedLocalsInSpread
Do not report error on unused removed property from object spread when its module member
2 parents 4cbb50a + 14cce29 commit 74a9924

File tree

4 files changed

+85
-1
lines changed

4 files changed

+85
-1
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16899,7 +16899,7 @@ namespace ts {
1689916899
if (!local.isReferenced && !local.exportSymbol) {
1690016900
for (const declaration of local.declarations) {
1690116901
if (!isAmbientModule(declaration)) {
16902-
error(declaration.name, Diagnostics._0_is_declared_but_never_used, local.name);
16902+
errorUnusedLocal(declaration.name, local.name);
1690316903
}
1690416904
}
1690516905
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(6,6): error TS6133: 'rest' is declared but never used.
2+
tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(9,10): error TS6133: 'foo' is declared but never used.
3+
tests/cases/compiler/unusedLocalsAndObjectSpread2.ts(13,8): error TS6133: 'rest' is declared but never used.
4+
5+
6+
==== tests/cases/compiler/unusedLocalsAndObjectSpread2.ts (3 errors) ====
7+
8+
declare let props: any;
9+
const {
10+
children, // here!
11+
active: _a, // here!
12+
...rest,
13+
~~~~
14+
!!! error TS6133: 'rest' is declared but never used.
15+
} = props;
16+
17+
function foo() {
18+
~~~
19+
!!! error TS6133: 'foo' is declared but never used.
20+
const {
21+
children,
22+
active: _a,
23+
...rest,
24+
~~~~
25+
!!! error TS6133: 'rest' is declared but never used.
26+
} = props;
27+
}
28+
29+
export const asdf = 123;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//// [unusedLocalsAndObjectSpread2.ts]
2+
3+
declare let props: any;
4+
const {
5+
children, // here!
6+
active: _a, // here!
7+
...rest,
8+
} = props;
9+
10+
function foo() {
11+
const {
12+
children,
13+
active: _a,
14+
...rest,
15+
} = props;
16+
}
17+
18+
export const asdf = 123;
19+
20+
//// [unusedLocalsAndObjectSpread2.js]
21+
"use strict";
22+
var __rest = (this && this.__rest) || function (s, e) {
23+
var t = {};
24+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
25+
t[p] = s[p];
26+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
27+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
28+
t[p[i]] = s[p[i]];
29+
return t;
30+
};
31+
var children = props.children, // here!
32+
_a = props.active, // here!
33+
rest = __rest(props, ["children", "active"]);
34+
function foo() {
35+
var children = props.children, _a = props.active, rest = __rest(props, ["children", "active"]);
36+
}
37+
exports.asdf = 123;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@noUnusedLocals:true
2+
3+
declare let props: any;
4+
const {
5+
children, // here!
6+
active: _a, // here!
7+
...rest,
8+
} = props;
9+
10+
function foo() {
11+
const {
12+
children,
13+
active: _a,
14+
...rest,
15+
} = props;
16+
}
17+
18+
export const asdf = 123;

0 commit comments

Comments
 (0)