From 9ee5e6e59ca96bc79a32adf0eb2f985fc65c1bd6 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Fri, 8 Jul 2016 14:23:04 -0400 Subject: [PATCH] Create a variable for class properties in scope instead of deleting the key (babel/babel-eslint#336) --- eslint/babel-eslint-parser/babylon-to-espree/toAST.js | 5 ----- eslint/babel-eslint-parser/index.js | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/eslint/babel-eslint-parser/babylon-to-espree/toAST.js b/eslint/babel-eslint-parser/babylon-to-espree/toAST.js index 5dce899a52..cc680e999e 100644 --- a/eslint/babel-eslint-parser/babylon-to-espree/toAST.js +++ b/eslint/babel-eslint-parser/babylon-to-espree/toAST.js @@ -206,11 +206,6 @@ var astTransformVisitor = { } } - // remove class property keys (or patch in escope) - if (path.isClassProperty()) { - delete node.key; - } - // async function as generator if (path.isFunction()) { if (node.async) node.generator = true; diff --git a/eslint/babel-eslint-parser/index.js b/eslint/babel-eslint-parser/index.js index 004f3a761d..9cbfb51a39 100644 --- a/eslint/babel-eslint-parser/index.js +++ b/eslint/babel-eslint-parser/index.js @@ -229,6 +229,13 @@ function monkeypatch() { // visit decorators that are in: ClassDeclaration / ClassExpression var visitClass = referencer.prototype.visitClass; referencer.prototype.visitClass = function(node) { + var classBody = node.body.body; + for (var a = 0; a < classBody.length; a++) { + if (classBody[a].type === "ClassProperty") { + createScopeVariable.call(this, classBody[a], classBody[a].key); + } + } + visitDecorators.call(this, node); var typeParamScope; if (node.typeParameters) {