Refactor generated builder names in @babel/types (#11582)
* ensure only builders starting with lowercase are used * update generate builders to have function name starting flow lowercase * fix bug in deprecated builders * remove comment about not yet discussed change in next major version
This commit is contained in:
@@ -11,15 +11,29 @@ module.exports = function generateBuilders() {
|
||||
*/
|
||||
import builder from "../builder";\n\n`;
|
||||
|
||||
const reservedNames = new Set(["super", "import"]);
|
||||
Object.keys(definitions.BUILDER_KEYS).forEach(type => {
|
||||
output += `export function ${type}(...args: Array<any>): Object { return builder("${type}", ...args); }
|
||||
export { ${type} as ${formatBuilderName(type)} };\n`;
|
||||
const formatedBuilderName = formatBuilderName(type);
|
||||
const formatedBuilderNameLocal = reservedNames.has(formatedBuilderName)
|
||||
? `_${formatedBuilderName}`
|
||||
: formatedBuilderName;
|
||||
output += `${
|
||||
formatedBuilderNameLocal === formatedBuilderName ? "export " : ""
|
||||
}function ${formatedBuilderNameLocal}(...args: Array<any>): Object { return builder("${type}", ...args); }\n`;
|
||||
// This is needed for backwards compatibility.
|
||||
// arrayExpression -> ArrayExpression
|
||||
output += `export { ${formatedBuilderNameLocal} as ${type} };\n`;
|
||||
if (formatedBuilderNameLocal !== formatedBuilderName) {
|
||||
output += `export { ${formatedBuilderNameLocal} as ${formatedBuilderName} };\n`;
|
||||
}
|
||||
|
||||
// This is needed for backwards compatibility.
|
||||
// It should be removed in the next major version.
|
||||
// JSXIdentifier -> jSXIdentifier
|
||||
if (/^[A-Z]{2}/.test(type)) {
|
||||
output += `export { ${type} as ${lowerFirst(type)} }\n`;
|
||||
output += `export { ${formatedBuilderNameLocal} as ${lowerFirst(
|
||||
type
|
||||
)} }\n`;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -27,7 +41,7 @@ export { ${type} as ${formatBuilderName(type)} };\n`;
|
||||
const newType = definitions.DEPRECATED_KEYS[type];
|
||||
output += `export function ${type}(...args: Array<any>): Object {
|
||||
console.trace("The node type ${type} has been renamed to ${newType}");
|
||||
return ${type}("${type}", ...args);
|
||||
return builder("${type}", ...args);
|
||||
}
|
||||
export { ${type} as ${formatBuilderName(type)} };\n`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user