@babel/eslint-parser: Refactor (#10916)

This commit is contained in:
Kai Cataldo 2019-12-23 17:12:07 -05:00 committed by Nicolò Ribaudo
parent 83993b08d5
commit c09664f35d
7 changed files with 37 additions and 33 deletions

View File

@ -1,27 +1,6 @@
import { types as t } from "@babel/core";
import { types as t, traverse } from "@babel/core";
import convertProgramNode from "./convertProgramNode";
module.exports = function(ast, traverse, code) {
const state = { source: code };
// Monkey patch visitor keys in order to be able to traverse the estree nodes
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
t.VISITOR_KEYS.MethodDefinition = [
"key",
"value",
"decorators",
"returnType",
"typeParameters",
];
traverse(ast, astTransformVisitor, null, state);
delete t.VISITOR_KEYS.Property;
delete t.VISITOR_KEYS.MethodDefinition;
convertProgramNode(ast);
};
const astTransformVisitor = {
noScope: true,
enter(path) {
@ -94,3 +73,24 @@ const astTransformVisitor = {
}
},
};
export default function(ast, code) {
const state = { source: code };
// Monkey patch visitor keys in order to be able to traverse the estree nodes
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
t.VISITOR_KEYS.MethodDefinition = [
"key",
"value",
"decorators",
"returnType",
"typeParameters",
];
traverse(ast, astTransformVisitor, null, state);
delete t.VISITOR_KEYS.Property;
delete t.VISITOR_KEYS.MethodDefinition;
convertProgramNode(ast);
}

View File

@ -1,4 +1,6 @@
export default function(tokens, tt) {
import { tokTypes as tt } from "@babel/core";
export default function(tokens) {
let curlyBrace = null;
let templateTokens = [];
const result = [];

View File

@ -1,4 +1,6 @@
export default function(token, tt, source) {
import { tokTypes as tt } from "@babel/core";
export default function(token, source) {
const type = token.type;
token.range = [token.start, token.end];

View File

@ -1,8 +1,8 @@
import convertTemplateType from "./convertTemplateType";
import convertToken from "./convertToken";
export default function(tokens, tt, code) {
return convertTemplateType(tokens, tt)
export default function(tokens, code) {
return convertTemplateType(tokens)
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock")
.map(t => convertToken(t, tt, code));
.map(t => convertToken(t, code));
}

View File

@ -2,8 +2,8 @@ import convertTokens from "./convertTokens";
import convertComments from "./convertComments";
import convertAST from "./convertAST";
export default function(ast, traverse, tt, code) {
ast.tokens = convertTokens(ast.tokens, tt, code);
export default function(ast, code) {
ast.tokens = convertTokens(ast.tokens, code);
convertComments(ast.comments);
convertAST(ast, traverse, code);
convertAST(ast, code);
}

View File

@ -12,7 +12,7 @@ const IS_RUNNING_SUPPORTED_VERSION = semver.satisfies(
);
export function parse(code, options) {
return exports.parseForESLint(code, options).ast;
return parseForESLint(code, options).ast;
}
export function parseForESLint(code, options = {}) {

View File

@ -1,4 +1,4 @@
import { parseSync as babelParse, tokTypes as tt, traverse } from "@babel/core";
import { parseSync as babelParse } from "@babel/core";
import babylonToEspree from "./babylon-to-espree";
import { normalizeBabelParseConfig } from "./configuration";
@ -17,7 +17,7 @@ export default function parse(code, options) {
throw err;
}
babylonToEspree(ast, traverse, tt, code);
babylonToEspree(ast, code);
return ast;
}