From 3c414db3125335ef0486619c71beca07fa4b0582 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 27 Sep 2016 12:32:10 -0400 Subject: [PATCH] remove eslint 2 logic (babel/babel-eslint#361) * remove old code * remove async/await logic before eslint supported it * not needed --- .../babylon-to-espree/toAST.js | 12 ----- eslint/babel-eslint-parser/index.js | 48 +++++-------------- .../babel-eslint-parser/test/babel-eslint.js | 10 +++- .../test/non-regression.js | 2 +- 4 files changed, 21 insertions(+), 51 deletions(-) diff --git a/eslint/babel-eslint-parser/babylon-to-espree/toAST.js b/eslint/babel-eslint-parser/babylon-to-espree/toAST.js index 388253f1d0..caa6a4e4cb 100644 --- a/eslint/babel-eslint-parser/babylon-to-espree/toAST.js +++ b/eslint/babel-eslint-parser/babylon-to-espree/toAST.js @@ -202,11 +202,6 @@ var astTransformVisitor = { } } - // async function as generator - if (path.isFunction()) { - if (node.async) node.generator = true; - } - // TODO: remove (old esprima) if (path.isFunction()) { if (!node.defaults) { @@ -214,13 +209,6 @@ var astTransformVisitor = { } } - // await transform to yield - if (path.isAwaitExpression()) { - node.type = "YieldExpression"; - node.delegate = node.all; - delete node.all; - } - // template string range fixes if (path.isTemplateLiteral()) { node.quasis.forEach(function (q) { diff --git a/eslint/babel-eslint-parser/index.js b/eslint/babel-eslint-parser/index.js index 643f82156e..048cdbaca3 100644 --- a/eslint/babel-eslint-parser/index.js +++ b/eslint/babel-eslint-parser/index.js @@ -1,13 +1,12 @@ var babylonToEspree = require("./babylon-to-espree"); -var pick = require("lodash.pickby"); -var Module = require("module"); -var path = require("path"); -var parse = require("babylon").parse; -var t = require("babel-types"); -var tt = require("babylon").tokTypes; -var traverse = require("babel-traverse").default; +var pick = require("lodash.pickby"); +var Module = require("module"); +var path = require("path"); +var parse = require("babylon").parse; +var t = require("babel-types"); +var tt = require("babylon").tokTypes; +var traverse = require("babel-traverse").default; -var estraverse; var hasPatched = false; var eslintOptions = {}; @@ -37,39 +36,12 @@ function monkeypatch() { // get modules relative to what eslint will load var eslintMod = createModule(eslintLoc); - var escopeLoc = Module._resolveFilename("escope", eslintMod); - var escopeMod = createModule(escopeLoc); - - // npm 3: monkeypatch estraverse if it's in escope - var estraverseRelative = escopeMod; - try { - var esrecurseLoc = Module._resolveFilename("esrecurse", eslintMod); - estraverseRelative = createModule(esrecurseLoc); - } catch (err) {} - // contains all the instances of estraverse so we can modify them if necessary var estraverses = []; - - // monkeypatch estraverse - estraverse = estraverseRelative.require("estraverse"); - estraverses.push(estraverse); - Object.assign(estraverse.VisitorKeys, t.VISITOR_KEYS); - - // monkeypatch estraverse-fb (only for eslint < 2.3.0) - try { - var estraverseFb = eslintMod.require("estraverse-fb"); - estraverses.push(estraverseFb); - Object.assign(estraverseFb.VisitorKeys, t.VISITOR_KEYS); - } catch (err) { - // Ignore: ESLint v2.3.0 does not have estraverse-fb - } - // ESLint v1.9.0 uses estraverse directly to work around https://github.com/npm/npm/issues/9663 var estraverseOfEslint = eslintMod.require("estraverse"); - if (estraverseOfEslint !== estraverseFb) { - estraverses.push(estraverseOfEslint); - Object.assign(estraverseOfEslint.VisitorKeys, t.VISITOR_KEYS); - } + estraverses.push(estraverseOfEslint); + Object.assign(estraverseOfEslint.VisitorKeys, t.VISITOR_KEYS); estraverses.forEach(function (estraverse) { estraverse.VisitorKeys.MethodDefinition.push("decorators"); @@ -77,6 +49,8 @@ function monkeypatch() { }); // monkeypatch escope + var escopeLoc = Module._resolveFilename("escope", eslintMod); + var escopeMod = createModule(escopeLoc); var escope = require(escopeLoc); var analyze = escope.analyze; escope.analyze = function (ast, opts) { diff --git a/eslint/babel-eslint-parser/test/babel-eslint.js b/eslint/babel-eslint-parser/test/babel-eslint.js index 956354803a..1de61af7a0 100644 --- a/eslint/babel-eslint-parser/test/babel-eslint.js +++ b/eslint/babel-eslint-parser/test/babel-eslint.js @@ -56,7 +56,7 @@ function parseAndAssertSame(code) { range: true, comment: true, attachComment: true, - ecmaVersion: 6, + ecmaVersion: 8, sourceType: "module" }); var babylonAST = babelEslint.parse(code); @@ -455,5 +455,13 @@ describe("babylon-to-esprima", function () { parseAndAssertSame("var a = [ a, ...b ]"); parseAndAssertSame("var a = sum(...b)"); }); + + it("Async/Await", function() { + parseAndAssertSame( + `async function a() { + await 1; + }` + ); + }); }); }); diff --git a/eslint/babel-eslint-parser/test/non-regression.js b/eslint/babel-eslint-parser/test/non-regression.js index 7067c4d87a..996cc66b2c 100644 --- a/eslint/babel-eslint-parser/test/non-regression.js +++ b/eslint/babel-eslint-parser/test/non-regression.js @@ -11,7 +11,7 @@ function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, over es6: true }, parserOptions: { - ecmaVersion: 6, + ecmaVersion: 8, ecmaFeatures: { jsx: true, experimentalObjectRestSpread: true,