From fd4ff6c0cee1f1b021322b9d6d518fcf1d74bb29 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 27 Sep 2016 11:38:55 -0400 Subject: [PATCH 1/3] remove old code --- index.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/index.js b/index.js index 643f8215..35794460 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,11 @@ 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; @@ -55,21 +55,10 @@ function monkeypatch() { 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"); From b0376c0b0e77ffb6782718e794bd9c1be56102f6 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 27 Sep 2016 11:49:37 -0400 Subject: [PATCH 2/3] remove async/await logic before eslint supported it --- babylon-to-espree/toAST.js | 12 ------------ test/babel-eslint.js | 10 +++++++++- test/non-regression.js | 2 +- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/babylon-to-espree/toAST.js b/babylon-to-espree/toAST.js index 388253f1..caa6a4e4 100644 --- a/babylon-to-espree/toAST.js +++ b/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/test/babel-eslint.js b/test/babel-eslint.js index 95635480..1de61af7 100644 --- a/test/babel-eslint.js +++ b/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/test/non-regression.js b/test/non-regression.js index 7067c4d8..996cc66b 100644 --- a/test/non-regression.js +++ b/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, From a75b268dfaa29bf045d339bf99147b869db0dea8 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 27 Sep 2016 12:08:29 -0400 Subject: [PATCH 3/3] not needed --- index.js | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index 35794460..048cdbac 100644 --- a/index.js +++ b/index.js @@ -7,7 +7,6 @@ var t = require("babel-types"); var tt = require("babylon").tokTypes; var traverse = require("babel-traverse").default; -var estraverse; var hasPatched = false; var eslintOptions = {}; @@ -37,24 +36,8 @@ 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); - // ESLint v1.9.0 uses estraverse directly to work around https://github.com/npm/npm/issues/9663 var estraverseOfEslint = eslintMod.require("estraverse"); estraverses.push(estraverseOfEslint); @@ -66,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) {