diff --git a/eslint/babel-eslint-parser/index.js b/eslint/babel-eslint-parser/index.js index 98d0b18c9d..46a196e87d 100644 --- a/eslint/babel-eslint-parser/index.js +++ b/eslint/babel-eslint-parser/index.js @@ -72,6 +72,11 @@ function monkeypatch() { assign(estraverseOfEslint.VisitorKeys, t.VISITOR_KEYS); } + estraverses.forEach(function (estraverse) { + estraverse.VisitorKeys.MethodDefinition.push("decorators"); + estraverse.VisitorKeys.Property.push("decorators"); + }); + // monkeypatch escope var escope = require(escopeLoc); var analyze = escope.analyze; diff --git a/eslint/babel-eslint-parser/test/non-regression.js b/eslint/babel-eslint-parser/test/non-regression.js index 593cc49239..9f1e4d9dea 100644 --- a/eslint/babel-eslint-parser/test/non-regression.js +++ b/eslint/babel-eslint-parser/test/non-regression.js @@ -1048,6 +1048,7 @@ describe("verify", function () { [ "import classDeclaration from 'decorator';", "import decoratorParameter from 'decorator';", + "@classDeclaration((parameter) => parameter)", "@classDeclaration(decoratorParameter)", "@classDeclaration", "export class TextareaAutosize {}" @@ -1063,6 +1064,7 @@ describe("verify", function () { "import classMethodDeclarationA from 'decorator';", "import decoratorParameter from 'decorator';", "export class TextareaAutosize {", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "methodDeclaration(e) {", @@ -1081,9 +1083,11 @@ describe("verify", function () { "import classMethodDeclarationA from 'decorator';", "import decoratorParameter from 'decorator';", "export class TextareaAutosize {", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "get bar() { }", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "set bar(val) { val; }", @@ -1100,6 +1104,7 @@ describe("verify", function () { "import classMethodDeclarationA from 'decorator';", "import decoratorParameter from 'decorator';", "var obj = {", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "methodDeclaration(e) {", @@ -1119,9 +1124,11 @@ describe("verify", function () { "import classMethodDeclarationA from 'decorator';", "import decoratorParameter from 'decorator';", "var obj = {", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "get bar() { },", + "@classMethodDeclarationA((parameter) => parameter)", "@classMethodDeclarationA(decoratorParameter)", "@classMethodDeclarationA", "set bar(val) { val; }",