diff --git a/packages/babel-types/scripts/utils/stringifyValidator.js b/packages/babel-types/scripts/utils/stringifyValidator.js index 58d9e5ede0a3..a3da470ad7c8 100644 --- a/packages/babel-types/scripts/utils/stringifyValidator.js +++ b/packages/babel-types/scripts/utils/stringifyValidator.js @@ -8,7 +8,10 @@ export default function stringifyValidator(validator, nodePrefix) { } if (validator.chainOf) { - return stringifyValidator(validator.chainOf[1], nodePrefix); + const ret = stringifyValidator(validator.chainOf[1], nodePrefix); + return Array.isArray(ret) && ret.length === 1 && ret[0] === "any" + ? stringifyValidator(validator.chainOf[0], nodePrefix) + : ret; } if (validator.oneOf) { diff --git a/packages/babel-types/src/definitions/core.ts b/packages/babel-types/src/definitions/core.ts index eb8030e76600..1f7b35039a3b 100644 --- a/packages/babel-types/src/definitions/core.ts +++ b/packages/babel-types/src/definitions/core.ts @@ -1961,20 +1961,6 @@ defineType("TaggedTemplateExpression", { }, }); -function templateElementCookedValidator(node: t.TemplateElement) { - const raw = node.value.raw; - if (node.value.cooked != null) { - return; - } - - let cooked = null; - try { - cooked = unraw(raw); - } catch (error) {} - node.value.cooked = cooked; -} -templateElementCookedValidator.type = "{ raw: string; cooked?: string }"; // hack - defineType("TemplateElement", { builder: ["value", "tail"], fields: { @@ -1989,7 +1975,18 @@ defineType("TemplateElement", { optional: true, }, }), - templateElementCookedValidator, + function templateElementCookedValidator(node: t.TemplateElement) { + const raw = node.value.raw; + if (node.value.cooked != null) { + return; + } + + let cooked = null; + try { + cooked = unraw(raw); + } catch (error) {} + node.value.cooked = cooked; + }, ), }, tail: {