diff --git a/eslint/babel-eslint-parser/acorn-to-esprima.js b/eslint/babel-eslint-parser/acorn-to-esprima.js index 4c12108574..c0d02a5392 100644 --- a/eslint/babel-eslint-parser/acorn-to-esprima.js +++ b/eslint/babel-eslint-parser/acorn-to-esprima.js @@ -190,10 +190,6 @@ var astTransformVisitor = { delete node.argument; } - if (this.isRestElement()) { - return node.argument; - } - // flow: prevent "no-undef" // for "Component" in: "let x: React.Component" if (this.isQualifiedTypeIdentifier()) { diff --git a/eslint/babel-eslint-parser/test/babel-eslint.js b/eslint/babel-eslint-parser/test/babel-eslint.js index 9f0b285068..05983d9982 100644 --- a/eslint/babel-eslint-parser/test/babel-eslint.js +++ b/eslint/babel-eslint-parser/test/babel-eslint.js @@ -35,27 +35,29 @@ function parseAndAssertSame(code) { var esAST = espree.parse(code, { ecmaFeatures: { arrowFunctions: true, - blockBindings: true, - destructuring: true, - regexYFlag: true, - regexUFlag: true, - templateStrings: true, binaryLiterals: true, - octalLiterals: true, - unicodeCodePointEscapes: true, + blockBindings: true, + classes: true, defaultParams: true, - restParams: true, + destructuring: true, forOf: true, + generators: true, + modules: true, objectLiteralComputedProperties: true, + objectLiteralDuplicateProperties: true, objectLiteralShorthandMethods: true, objectLiteralShorthandProperties: true, - objectLiteralDuplicateProperties: true, - generators: true, + octalLiterals: true, + regexUFlag: true, + regexYFlag: true, + restParams: true, spread: true, - classes: true, - modules: true, + superInFunctions: true, + templateStrings: true, + unicodeCodePointEscapes: true, + globalReturn: true, jsx: true, - globalReturn: true + experimentalObjectRestSpread: true, }, tokens: true, loc: true, diff --git a/eslint/babel-eslint-parser/test/non-regression.js b/eslint/babel-eslint-parser/test/non-regression.js index 4683dc6f36..1dc559b8b1 100644 --- a/eslint/babel-eslint-parser/test/non-regression.js +++ b/eslint/babel-eslint-parser/test/non-regression.js @@ -1273,4 +1273,11 @@ describe("verify", function () { [ ] ) }); + + it("no no-undef error with rest #11", function () { + verifyAndAssertMessages("const [a, ...rest] = ['1', '2', '3']; a; rest;", + { "no-undef": 1, "no-unused-vars": 1 }, + [ ] + ) + }); });