Skip to content
This repository has been archived by the owner on Aug 18, 2021. It is now read-only.

Commit

Permalink
remove eslint 2 logic (#361)
Browse files Browse the repository at this point in the history
* remove old code

* remove async/await logic before eslint supported it

* not needed
  • Loading branch information
hzoo committed Sep 27, 2016
1 parent 4cf9ac1 commit 1823b5e
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 52 deletions.
12 changes: 0 additions & 12 deletions babylon-to-espree/toAST.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,25 +202,13 @@ 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) {
node.defaults = [];
}
}

// 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) {
Expand Down
50 changes: 12 additions & 38 deletions index.js
Original file line number Diff line number Diff line change
@@ -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 estraverse;
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 hasPatched = false;
var eslintOptions = {};

Expand Down Expand Up @@ -37,46 +36,21 @@ 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");
estraverse.VisitorKeys.Property.push("decorators");
});

// 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) {
Expand Down
10 changes: 9 additions & 1 deletion test/babel-eslint.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function parseAndAssertSame(code) {
range: true,
comment: true,
attachComment: true,
ecmaVersion: 6,
ecmaVersion: 8,
sourceType: "module"
});
var babylonAST = babelEslint.parse(code);
Expand Down Expand Up @@ -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;
}`
);
});
});
});
2 changes: 1 addition & 1 deletion test/non-regression.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, over
es6: true
},
parserOptions: {
ecmaVersion: 6,
ecmaVersion: 8,
ecmaFeatures: {
jsx: true,
experimentalObjectRestSpread: true,
Expand Down

0 comments on commit 1823b5e

Please sign in to comment.