diff --git a/eslint/babel-eslint-parser/index.js b/eslint/babel-eslint-parser/index.js index f89554f130..3cf0b6537e 100644 --- a/eslint/babel-eslint-parser/index.js +++ b/eslint/babel-eslint-parser/index.js @@ -244,8 +244,13 @@ function monkeypatch() { // only visit if function parameters have types if (node.params) { for (var i = 0; i < node.params.length; i++) { - if (node.params[i].typeAnnotation) { - checkIdentifierOrVisit.call(this, node.params[i]); + var param = node.params[i]; + if (param.typeAnnotation) { + checkIdentifierOrVisit.call(this, param); + } else if (t.isAssignmentPattern(param)) { + if (param.left.typeAnnotation) { + checkIdentifierOrVisit.call(this, param.left); + } } } } diff --git a/eslint/babel-eslint-parser/test/non-regression.js b/eslint/babel-eslint-parser/test/non-regression.js index 0dbea848c2..f24bad04e5 100644 --- a/eslint/babel-eslint-parser/test/non-regression.js +++ b/eslint/babel-eslint-parser/test/non-regression.js @@ -1309,4 +1309,23 @@ describe("verify", function () { [ ] ) }); + + it("default param flow type no-unused-vars #184", function () { + verifyAndAssertMessages( + [ + "type ResolveOptionType = {", + "depth?: number,", + "identifier?: string", + "};", + "", + "export default function resolve(", + "options: ResolveOptionType = {}", + "): Object {", + "options;", + "}", + ].join("\n"), + { "no-unused-vars": 1, "no-undef": 1 }, + [ ] + ) + }); });