Drop module transform code mentioning ES2015

This commit is contained in:
Jake Bailey
2025-10-24 11:05:36 -07:00
parent 050a6f8127
commit e773626db5
2 changed files with 33 additions and 78 deletions
@@ -242,7 +242,7 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S
]),
),
],
/*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None,
NodeFlags.Const,
),
);
importRequireStatements = [importStatement, requireStatement];
@@ -277,7 +277,7 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S
createRequireCall(node),
),
],
/*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None,
NodeFlags.Const,
),
),
node,
@@ -331,7 +331,7 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S
function visitExportDeclaration(node: ExportDeclaration) {
const updatedModuleSpecifier = rewriteModuleSpecifier(node.moduleSpecifier, compilerOptions);
if (
(compilerOptions.module !== undefined && compilerOptions.module > ModuleKind.ES2015)
compilerOptions.module !== undefined
|| !node.exportClause || !isNamespaceExport(node.exportClause) || !node.moduleSpecifier
) {
// Either ill-formed or don't need to be tranformed.
+30 -75
View File
@@ -1217,19 +1217,18 @@ export function transformModule(context: TransformationContext): (x: SourceFile
: firstArgument && rewriteOrShim
? isStringLiteral(firstArgument) ? rewriteModuleSpecifier(firstArgument, compilerOptions) : emitHelpers().createRewriteRelativeImportExtensionsHelper(firstArgument)
: firstArgument;
const containsLexicalThis = !!(node.transformFlags & TransformFlags.ContainsLexicalThis);
switch (compilerOptions.module) {
case ModuleKind.AMD:
return createImportCallExpressionAMD(argument, containsLexicalThis);
return createImportCallExpressionAMD(argument);
case ModuleKind.UMD:
return createImportCallExpressionUMD(argument ?? factory.createVoidZero(), containsLexicalThis);
return createImportCallExpressionUMD(argument ?? factory.createVoidZero());
case ModuleKind.CommonJS:
default:
return createImportCallExpressionCommonJS(argument);
}
}
function createImportCallExpressionUMD(arg: Expression, containsLexicalThis: boolean): Expression {
function createImportCallExpressionUMD(arg: Expression): Expression {
// (function (factory) {
// ... (regular UMD)
// }
@@ -1251,7 +1250,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile
/*questionToken*/ undefined,
/*whenTrue*/ createImportCallExpressionCommonJS(arg),
/*colonToken*/ undefined,
/*whenFalse*/ createImportCallExpressionAMD(argClone, containsLexicalThis),
/*whenFalse*/ createImportCallExpressionAMD(argClone),
);
}
else {
@@ -1263,13 +1262,13 @@ export function transformModule(context: TransformationContext): (x: SourceFile
/*questionToken*/ undefined,
/*whenTrue*/ createImportCallExpressionCommonJS(temp, /*isInlineable*/ true),
/*colonToken*/ undefined,
/*whenFalse*/ createImportCallExpressionAMD(temp, containsLexicalThis),
/*whenFalse*/ createImportCallExpressionAMD(temp),
),
);
}
}
function createImportCallExpressionAMD(arg: Expression | undefined, containsLexicalThis: boolean): Expression {
function createImportCallExpressionAMD(arg: Expression | undefined): Expression {
// improt("./blah")
// emit as
// define(["require", "exports", "blah"], function (require, exports) {
@@ -1292,35 +1291,14 @@ export function transformModule(context: TransformationContext): (x: SourceFile
),
]);
let func: FunctionExpression | ArrowFunction;
if (languageVersion >= ScriptTarget.ES2015) {
func = factory.createArrowFunction(
/*modifiers*/ undefined,
/*typeParameters*/ undefined,
parameters,
/*type*/ undefined,
/*equalsGreaterThanToken*/ undefined,
body,
);
}
else {
func = factory.createFunctionExpression(
/*modifiers*/ undefined,
/*asteriskToken*/ undefined,
/*name*/ undefined,
/*typeParameters*/ undefined,
parameters,
/*type*/ undefined,
body,
);
// if there is a lexical 'this' in the import call arguments, ensure we indicate
// that this new function expression indicates it captures 'this' so that the
// es2015 transformer will properly substitute 'this' with '_this'.
if (containsLexicalThis) {
setEmitFlags(func, EmitFlags.CapturesThis);
}
}
const func = factory.createArrowFunction(
/*modifiers*/ undefined,
/*typeParameters*/ undefined,
parameters,
/*type*/ undefined,
/*equalsGreaterThanToken*/ undefined,
body,
);
const promise = factory.createNewExpression(factory.createIdentifier("Promise"), /*typeArguments*/ undefined, [func]);
if (getESModuleInterop(compilerOptions)) {
@@ -1343,19 +1321,11 @@ export function transformModule(context: TransformationContext): (x: SourceFile
factory.createPropertyAccessExpression(factory.createIdentifier("Promise"), "resolve"),
/*typeArguments*/ undefined,
/*argumentsArray*/ needSyncEval
? languageVersion >= ScriptTarget.ES2015
? [
factory.createTemplateExpression(factory.createTemplateHead(""), [
factory.createTemplateSpan(arg, factory.createTemplateTail("")),
]),
]
: [
factory.createCallExpression(
factory.createPropertyAccessExpression(factory.createStringLiteral(""), "concat"),
/*typeArguments*/ undefined,
[arg],
),
]
? [
factory.createTemplateExpression(factory.createTemplateHead(""), [
factory.createTemplateSpan(arg, factory.createTemplateTail("")),
]),
]
: [],
);
@@ -1378,29 +1348,14 @@ export function transformModule(context: TransformationContext): (x: SourceFile
]
: [];
let func: FunctionExpression | ArrowFunction;
if (languageVersion >= ScriptTarget.ES2015) {
func = factory.createArrowFunction(
/*modifiers*/ undefined,
/*typeParameters*/ undefined,
/*parameters*/ parameters,
/*type*/ undefined,
/*equalsGreaterThanToken*/ undefined,
requireCall,
);
}
else {
func = factory.createFunctionExpression(
/*modifiers*/ undefined,
/*asteriskToken*/ undefined,
/*name*/ undefined,
/*typeParameters*/ undefined,
/*parameters*/ parameters,
/*type*/ undefined,
factory.createBlock([factory.createReturnStatement(requireCall)]),
);
}
const func = factory.createArrowFunction(
/*modifiers*/ undefined,
/*typeParameters*/ undefined,
/*parameters*/ parameters,
/*type*/ undefined,
/*equalsGreaterThanToken*/ undefined,
requireCall,
);
const downleveledImport = factory.createCallExpression(factory.createPropertyAccessExpression(promiseResolveCall, "then"), /*typeArguments*/ undefined, [func]);
return downleveledImport;
@@ -1489,7 +1444,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile
/*modifiers*/ undefined,
factory.createVariableDeclarationList(
variables,
languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None,
NodeFlags.Const,
),
),
/*location*/ node,
@@ -1520,7 +1475,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile
/*original*/ node,
),
],
languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None,
NodeFlags.Const,
),
),
);
@@ -1588,7 +1543,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile
createRequireCall(node),
),
],
/*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None,
NodeFlags.Const,
),
),
node,