Refactor: Remove composeLoc function (#9896)

This commit is contained in:
fisker Cheung authored and GitHub committed 2020-12-16 08:52:59 +08:00
1 parent 94256cac91
commit 1bde9d8856
2 files changed
+15 -26

No files matched your search

-16
View File
@@ -25,21 +25,6 @@ function locEnd(node) {
return node.typeAnnotation ? Math.max(end, locEnd(node.typeAnnotation)) : end;
}
/**
* @param {Node} startNode
* @param {Node | number} endNodeOrLength
* @returns {number[]}
*/
function composeLoc(startNode, endNodeOrLength = startNode) {
const start = locStart(startNode);
const end =
typeof endNodeOrLength === "number"
? start + endNodeOrLength
: locEnd(endNodeOrLength);
return [start, end];
}
/**
* @param {Node} nodeA
* @param {Node} nodeB
@@ -70,7 +55,6 @@ function hasSameLoc(nodeA, nodeB) {
module.exports = {
locStart,
locEnd,
composeLoc,
hasSameLocStart,
hasSameLoc,
};
+15 -10
View File
@@ -6,7 +6,7 @@ const {
getShebang,
} = require("../common/util");
const createError = require("../common/parser-create-error");
const { composeLoc, locStart, locEnd } = require("./loc");
const { locStart, locEnd } = require("./loc");
const { isTypeCastComment } = require("./comments");
function postprocess(ast, options) {
@@ -126,7 +126,7 @@ function postprocess(ast, options) {
}
// remove redundant TypeScript nodes
case "TSParenthesizedType": {
node.typeAnnotation.range = composeLoc(node);
node.typeAnnotation.range = [locStart(node), locEnd(node)];
return node.typeAnnotation;
}
case "TSUnionType":
@@ -134,26 +134,28 @@ function postprocess(ast, options) {
if (node.types.length === 1) {
const [firstType] = node.types;
// override loc, so that comments are attached properly
firstType.range = composeLoc(node);
firstType.range = [locStart(node), locEnd(node)];
return firstType;
}
break;
case "TSTypeParameter":
// babel-ts
if (typeof node.name === "string") {
const start = locStart(node);
node.name = {
type: "Identifier",
name: node.name,
range: composeLoc(node, node.name.length),
range: [start, start + node.name.length],
};
}
break;
case "SequenceExpression": {
// Babel (unlike other parsers) includes spaces and comments in the range. Let's unify this.
const lastExpression = getLast(node.expressions);
if (locEnd(node) > locEnd(lastExpression)) {
node.range = composeLoc(node, lastExpression);
}
node.range = [
locStart(node),
Math.min(locEnd(lastExpression), locEnd(node)),
];
break;
}
case "ClassProperty":
@@ -183,7 +185,10 @@ function postprocess(ast, options) {
if (options.originalText[locEnd(toOverrideNode)] === ";") {
return;
}
toBeOverriddenNode.range = composeLoc(toBeOverriddenNode, toOverrideNode);
toBeOverriddenNode.range = [
locStart(toBeOverriddenNode),
locEnd(toOverrideNode),
];
}
}
@@ -253,10 +258,10 @@ function rebalanceLogicalTree(node) {
operator: node.operator,
left: node.left,
right: node.right.left,
range: composeLoc(node.left, node.right.left),
range: [locStart(node.left), locEnd(node.right.left)],
}),
right: node.right.right,
range: composeLoc(node),
range: [locStart(node), locEnd(node)],
});
}