diff --git a/src/transformation/visitors/class/index.ts b/src/transformation/visitors/class/index.ts index d4633995e..b01617171 100644 --- a/src/transformation/visitors/class/index.ts +++ b/src/transformation/visitors/class/index.ts @@ -202,7 +202,7 @@ function transformClassLikeDeclaration( const iif = lua.createFunctionExpression(lua.createBlock(bodyStatements), [ lua.createIdentifier("self"), ]); - const iife = lua.createCallExpression(iif, [className]); + const iife = lua.createCallExpression(iif, [localClassName]); result.push(lua.createExpressionStatement(iife, member)); } } @@ -217,7 +217,7 @@ function transformClassLikeDeclaration( if (shouldBeExported(classDeclaration)) { const exportExpression = hasDefaultExportModifier(classDeclaration) ? createDefaultExportExpression(classDeclaration) - : createExportedIdentifier(context, className); + : createExportedIdentifier(context, localClassName); const classAssignment = lua.createAssignmentStatement(exportExpression, localClassName); result.push(classAssignment); diff --git a/test/unit/__snapshots__/identifiers.spec.ts.snap b/test/unit/__snapshots__/identifiers.spec.ts.snap index 4a8ddc751..b90b10398 100644 --- a/test/unit/__snapshots__/identifiers.spec.ts.snap +++ b/test/unit/__snapshots__/identifiers.spec.ts.snap @@ -427,3 +427,18 @@ function ____exports.__main(self) end return ____exports" `; + +exports[`unicode static initialization block (#1645) 1`] = ` +"local ____lualib = require("lualib_bundle") +local __TS__Class = ____lualib.__TS__Class +local ____exports = {} +____exports.default = __TS__Class() +local _____81EA_5B9A_4E49_5F02_80FD = ____exports.default +_____81EA_5B9A_4E49_5F02_80FD.name = "自定义异能" +function _____81EA_5B9A_4E49_5F02_80FD.prototype.____constructor(self) +end; +(function(self) + local a = 1 +end)(_____81EA_5B9A_4E49_5F02_80FD) +return ____exports" +`; diff --git a/test/unit/identifiers.spec.ts b/test/unit/identifiers.spec.ts index 4ef550c4e..4156e83ff 100644 --- a/test/unit/identifiers.spec.ts +++ b/test/unit/identifiers.spec.ts @@ -317,6 +317,17 @@ test("unicode export default class", () => { .expectToEqual({ result: "你好" }); }); +// https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1645 +test("unicode static initialization block (#1645)", () => { + util.testModule` + export default class 自定义异能 { + static { + let a = 1; + } + } + `.expectLuaToMatchSnapshot(); +}); + describe("lua keyword as identifier doesn't interfere with lua's value", () => { test("variable (nil)", () => { util.testFunction`