Skip to content

Commit b042ac6

Browse files
committed
Merge pull request #2680 from eslint/issue2678
Fix: Check unused vars in exported functions (fixes #2678)
2 parents e4aa91a + f39ac27 commit b042ac6

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

lib/rules/no-unused-vars.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ module.exports = function(context) {
4444

4545
if (definition) {
4646

47-
definition = definition.node;
48-
if (definition.type === "VariableDeclarator") {
49-
definition = definition.parent;
47+
var node = definition.node;
48+
if (node.type === "VariableDeclarator") {
49+
node = node.parent;
50+
} else if (definition.type === "Parameter" && node.type === "FunctionDeclaration") {
51+
return false;
5052
}
5153

52-
return definition.parent.type.indexOf("Export") === 0;
54+
return node.parent.type.indexOf("Export") === 0;
5355
} else {
5456
return false;
5557
}

tests/lib/rules/no-unused-vars.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ eslintTester.addRuleTest("lib/rules/no-unused-vars", {
136136
{ code: "(function z(foo) { var bar = 33; })();", options: [{"vars": "all", "args": "all"}], errors: [{ message: "foo is defined but never used" }, { message: "bar is defined but never used" }]},
137137
{ code: "(function z(foo) { z(); })();", options: [{}], errors: [{ message: "foo is defined but never used" }]},
138138
{ code: "function f() { var a = 1; return function(){ f(a = 2); }; }", options: [{}], errors: [{ message: "f is defined but never used" }, {message: "a is defined but never used"}]},
139-
{ code: "import x from \"y\";", ecmaFeatures: { modules: true }, errors: [{ message: "x is defined but never used" }]}
139+
{ code: "import x from \"y\";", ecmaFeatures: { modules: true }, errors: [{ message: "x is defined but never used" }]},
140+
{ code: "export function fn2({ x, y }) {\n console.log(x); \n};", ecmaFeatures: { modules: true, destructuring: true }, errors: [{ message: "y is defined but never used" }]},
141+
{ code: "export function fn2( x, y ) {\n console.log(x); \n};", ecmaFeatures: { modules: true }, errors: [{ message: "y is defined but never used" }]}
140142
]
141143
});

0 commit comments

Comments
 (0)