@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"; 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 = { const astTransformVisitor = {
noScope: true, noScope: true,
enter(path) { 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 curlyBrace = null;
let templateTokens = []; let templateTokens = [];
const result = []; 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; const type = token.type;
token.range = [token.start, token.end]; token.range = [token.start, token.end];

View File

@ -1,8 +1,8 @@
import convertTemplateType from "./convertTemplateType"; import convertTemplateType from "./convertTemplateType";
import convertToken from "./convertToken"; import convertToken from "./convertToken";
export default function(tokens, tt, code) { export default function(tokens, code) {
return convertTemplateType(tokens, tt) return convertTemplateType(tokens)
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock") .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 convertComments from "./convertComments";
import convertAST from "./convertAST"; import convertAST from "./convertAST";
export default function(ast, traverse, tt, code) { export default function(ast, code) {
ast.tokens = convertTokens(ast.tokens, tt, code); ast.tokens = convertTokens(ast.tokens, code);
convertComments(ast.comments); 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) { export function parse(code, options) {
return exports.parseForESLint(code, options).ast; return parseForESLint(code, options).ast;
} }
export function parseForESLint(code, options = {}) { 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 babylonToEspree from "./babylon-to-espree";
import { normalizeBabelParseConfig } from "./configuration"; import { normalizeBabelParseConfig } from "./configuration";
@ -17,7 +17,7 @@ export default function parse(code, options) {
throw err; throw err;
} }
babylonToEspree(ast, traverse, tt, code); babylonToEspree(ast, code);
return ast; return ast;
} }