diff --git a/.eslintrc b/.eslintrc index cc8376fbf8..8273a809af 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,8 +1,5 @@ { - "parser": "/Users/sebastian/Projects/babel/core/eslint.js", - "ecmaFeatures": { - "blockBindings": true - }, + "parser": "babel-eslint", "rules": { "strict": 0, "no-underscore-dangle": 0, diff --git a/eslint.js b/eslint.js deleted file mode 100644 index 010d937dfc..0000000000 --- a/eslint.js +++ /dev/null @@ -1,52 +0,0 @@ -var acornToEsprima = require("./lib/babel/helpers/acorn-to-esprima"); -var traverse = require("./lib/babel/traversal"); -var extend = require("lodash/object/extend"); -var Module = require("module"); -var acorn = require("acorn-babel"); -var t = require("./lib/babel/types"); - -var hasPatched = false; - -function monkeypatch() { - if (hasPatched) return; - hasPatched = true; - - // monkeypatch estraverse - var estraverse = require("estraverse"); - extend(estraverse.VisitorKeys, t.VISITOR_KEYS); - - // monkeypatch escope - var escope = require("eslint/node_modules/escope"); - var analyze = escope.analyze; - escope.analyze = function (ast, opts) { - opts.sourceType = 'module'; - opts.ecmaVersion = 6; - return analyze.call(this, ast, opts) - }; -} - -exports.parse = function (code) { - monkeypatch(); - - var opts = {}; - opts.ecmaVersion = 7; - opts.locations = true; - opts.playground = true; - opts.ranges = true; - - var comments = opts.onComment = []; - var tokens = opts.onToken = []; - - var ast = acorn.parse(code, opts); - - // convert tokens - ast.tokens = tokens.map(acornToEsprima.toEsprimaToken); - - // add comments - ast.comments = comments; - - // transform esprima and acorn divergent nodes - acornToEsprima.toEsprimaAST(ast); - - return ast; -}; diff --git a/package.json b/package.json index 89106c1426..0b62d35b32 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "browserify": "^9.0.3", "chai": "^2.0.0", "eslint": "^0.15.1", + "babel-eslint": "^1.0.0", "esvalid": "^1.1.0", "istanbul": "^0.3.5", "matcha": "^0.6.0", diff --git a/src/babel/api/node.js b/src/babel/api/node.js index 74aa437d6a..1d22a3701a 100644 --- a/src/babel/api/node.js +++ b/src/babel/api/node.js @@ -2,13 +2,13 @@ import isFunction from "lodash/lang/isFunction"; import transform from "../transformation"; import fs from "fs"; +export { default as acorn } from "acorn-babel"; export { default as _util, canCompile } from "../util"; export { default as transform } from "../transformation"; - -export { version } from "../../../package"; - +export { default as traverse } from "../traversal"; export { default as buildExternalHelpers } from "../build-external-helpers"; export { default as types } from "../types"; +export { version } from "../../../package"; export function register(opts) { var callback = require("./register/node"); diff --git a/src/babel/generation/index.js b/src/babel/generation/index.js index a2cc4e2d95..707434510f 100644 --- a/src/babel/generation/index.js +++ b/src/babel/generation/index.js @@ -11,7 +11,9 @@ import n from "./node"; import t from "../types"; class CodeGenerator { - constructor(ast, opts = {}, code) { + constructor(ast, opts, code) { + opts ||= {}; + this.comments = ast.comments || []; this.tokens = ast.tokens || []; this.format = CodeGenerator.normalizeOptions(code, opts); diff --git a/src/babel/helpers/acorn-to-esprima.js b/src/babel/helpers/acorn-to-esprima.js deleted file mode 100644 index 20d25999b2..0000000000 --- a/src/babel/helpers/acorn-to-esprima.js +++ /dev/null @@ -1,49 +0,0 @@ -import traverse from "../traversal"; -import { tokTypes } from "acorn-babel"; -import t from "../types"; - -export function toEsprimaToken(token) { - var type = token.type; - - if (type === tokTypes.name) { - token.type = "Identifier"; - } else if (type === tokTypes.semi || type === tokTypes.comma || type === tokTypes.parenL || type === tokTypes.parenR || type === tokTypes.braceL || type === tokTypes.braceR) { - token.type = "Punctuator"; - token.value = type.type; - } - - return token; -} - -export function toEsprimaAST(ast) { - traverse(ast, astTransformVisitor); -} - -var astTransformVisitor = { - noScope: true, - enter(node) { - if (t.isImportBatchSpecifier(node)) { - node.type = "ImportNamespaceSpecifier"; - node.id = node.name; - delete node.name; - } else if (t.isFunction(node)) { - node.defaults = []; - - node.params = node.params.map(function (param) { - if (t.isAssignmentPattern(param)) { - node.defaults.push(param.right); - return param.left; - } else { - node.defaults.push(null); - return param; - } - }); - - if (t.isRestElement(node.params[node.params.length - 1])) { - node.rest = node.params.pop(); - } - } else if (t.isClassProperty(node)) { - this.remove(); - } - } -};