"use strict"; var attachComments = require("./attachComments"); var convertComments = require("./convertComments"); var toTokens = require("./toTokens"); var toAST = require("./toAST"); module.exports = function (ast, traverse, tt, code) { // remove EOF token, eslint doesn't use this for anything and it interferes // with some rules see https://github.com/babel/babel-eslint/issues/2 // todo: find a more elegant way to do this ast.tokens.pop(); // convert tokens ast.tokens = toTokens(ast.tokens, tt, code); // add comments convertComments(ast.comments); // transform esprima and acorn divergent nodes toAST(ast, traverse, code); // ast.program.tokens = ast.tokens; // ast.program.comments = ast.comments; // ast = ast.program; // remove File ast.type = "Program"; ast.sourceType = ast.program.sourceType; ast.directives = ast.program.directives; ast.body = ast.program.body; delete ast.program; delete ast._paths; attachComments(ast, ast.comments, ast.tokens); };