Skip to content

Commit bd799f4

Browse files
authored
fix issue with unicode classnames and static initializer blocks (#1649)
1 parent ecad13f commit bd799f4

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

src/transformation/visitors/class/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ function transformClassLikeDeclaration(
202202
const iif = lua.createFunctionExpression(lua.createBlock(bodyStatements), [
203203
lua.createIdentifier("self"),
204204
]);
205-
const iife = lua.createCallExpression(iif, [className]);
205+
const iife = lua.createCallExpression(iif, [localClassName]);
206206
result.push(lua.createExpressionStatement(iife, member));
207207
}
208208
}
@@ -217,7 +217,7 @@ function transformClassLikeDeclaration(
217217
if (shouldBeExported(classDeclaration)) {
218218
const exportExpression = hasDefaultExportModifier(classDeclaration)
219219
? createDefaultExportExpression(classDeclaration)
220-
: createExportedIdentifier(context, className);
220+
: createExportedIdentifier(context, localClassName);
221221

222222
const classAssignment = lua.createAssignmentStatement(exportExpression, localClassName);
223223
result.push(classAssignment);

test/unit/__snapshots__/identifiers.spec.ts.snap

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,3 +427,18 @@ function ____exports.__main(self)
427427
end
428428
return ____exports"
429429
`;
430+
431+
exports[`unicode static initialization block (#1645) 1`] = `
432+
"local ____lualib = require("lualib_bundle")
433+
local __TS__Class = ____lualib.__TS__Class
434+
local ____exports = {}
435+
____exports.default = __TS__Class()
436+
local _____81EA_5B9A_4E49_5F02_80FD = ____exports.default
437+
_____81EA_5B9A_4E49_5F02_80FD.name = "自定义异能"
438+
function _____81EA_5B9A_4E49_5F02_80FD.prototype.____constructor(self)
439+
end;
440+
(function(self)
441+
local a = 1
442+
end)(_____81EA_5B9A_4E49_5F02_80FD)
443+
return ____exports"
444+
`;

test/unit/identifiers.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,17 @@ test("unicode export default class", () => {
317317
.expectToEqual({ result: "你好" });
318318
});
319319

320+
// https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1645
321+
test("unicode static initialization block (#1645)", () => {
322+
util.testModule`
323+
export default class 自定义异能 {
324+
static {
325+
let a = 1;
326+
}
327+
}
328+
`.expectLuaToMatchSnapshot();
329+
});
330+
320331
describe("lua keyword as identifier doesn't interfere with lua's value", () => {
321332
test("variable (nil)", () => {
322333
util.testFunction`

0 commit comments

Comments
 (0)