X Tutup
Skip to content

Commit dd33492

Browse files
authored
Fix import expression (#1321)
* Fix import expression * removed incorrect assert
1 parent 82f4f8b commit dd33492

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

src/transformation/visitors/modules/import.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ export const transformImportEqualsDeclaration: FunctionVisitor<ts.ImportEqualsDe
167167
export const transformImportExpression: FunctionVisitor<ts.CallExpression> = (node, context) => {
168168
importLuaLibFeature(context, LuaLibFeature.Promise);
169169

170-
const importPath = node.arguments.map(a => context.transformExpression(a));
171-
return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", node), importPath, node);
170+
const moduleRequire =
171+
node.arguments.length > 0 ? createModuleRequire(context, node.arguments[0], node) : lua.createNilLiteral();
172+
return lua.createCallExpression(createStaticPromiseFunctionAccessor("resolve", node), [moduleRequire], node);
172173
};

src/transpilation/resolve.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ function isBuildModeLibrary(program: ts.Program) {
304304
function findRequiredPaths(code: string): string[] {
305305
// Find all require("<path>") paths in a lua code string
306306
const paths: string[] = [];
307-
const pattern = /(^|\s|;|=)require\("(.+?)"\)/g;
307+
const pattern = /(^|\s|;|=|\()require\("(.+?)"\)/g;
308308
// eslint-disable-next-line @typescript-eslint/ban-types
309309
let match: RegExpExecArray | null;
310310
while ((match = pattern.exec(code))) {
@@ -321,7 +321,7 @@ function replaceRequireInCode(file: ProcessedFile, originalRequire: string, newR
321321
const escapedRequire = originalRequire.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
322322

323323
file.code = file.code.replace(
324-
new RegExp(`(^|\\s|;|=)require\\("${escapedRequire}"\\)`),
324+
new RegExp(`(^|\\s|;|=|\\()require\\("${escapedRequire}"\\)`),
325325
`$1require("${requirePath}")`
326326
);
327327
}

test/unit/modules/modules.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,5 +289,5 @@ test("import expression", () => {
289289
`
290290
.addExtraFile("module.ts", 'export function foo() { return "foo"; }')
291291
.setOptions({ module: ts.ModuleKind.ESNext })
292-
.expectToMatchJsResult();
292+
.expectToEqual({ result: "foo" });
293293
});

0 commit comments

Comments
 (0)
X Tutup