This commit is contained in:
2022-07-18 02:50:52 +00:00
parent befd344ab0
commit 06181b34d6
8569 changed files with 818704 additions and 352705 deletions
@@ -26,7 +26,7 @@ var _default = ({
const id = t.cloneNode(path.parent.id);
const binding = path.scope.getBinding(id.name); // if the binding gets reassigned anywhere, rename it
if (binding.constantViolations.length) {
if (binding == null ? void 0 : binding.constantViolations.length) {
path.scope.rename(id.name);
}
@@ -31,7 +31,7 @@ var _default = ({
let processed = state.get("processed");
if (!processed) {
processed = new Map();
processed = new WeakSet();
state.set("processed", processed);
}
@@ -54,13 +54,13 @@ var _default = ({
// identity`a${0}`
const template = t.taggedTemplateExpression(identity, t.templateLiteral(path.node.quasi.quasis, expressions.map(() => t.numericLiteral(0))));
processed.set(template, true); // Install an inline cache at the callsite using the global variable:
const template = t.taggedTemplateExpression(t.cloneNode(identity), t.templateLiteral(path.node.quasi.quasis, expressions.map(() => t.numericLiteral(0))));
processed.add(template); // Install an inline cache at the callsite using the global variable:
// _t || (_t = identity`a${0}`)
const ident = path.scope.getProgramParent().generateDeclaredUidIdentifier("t");
path.scope.getBinding(ident.name).path.parent.kind = "let";
const inlineCache = t.logicalExpression("||", ident, t.assignmentExpression("=", ident, template)); // The original tag function becomes a plain function call.
const inlineCache = t.logicalExpression("||", ident, t.assignmentExpression("=", t.cloneNode(ident), template)); // The original tag function becomes a plain function call.
// The expressions omitted from the cached Strings tag are directly applied as arguments.
// tag(_t || (_t = Object`a${0}`), 'hello')