diff --git a/src/transformation/visitors/access.ts b/src/transformation/visitors/access.ts index 4071c715e..f0f33d871 100644 --- a/src/transformation/visitors/access.ts +++ b/src/transformation/visitors/access.ts @@ -23,6 +23,7 @@ import { captureThisValue, } from "./optional-chaining"; import { SyntaxKind } from "typescript"; +import { getCustomNameFromSymbol } from "./identifier"; function addOneToArrayAccessArgument( context: TransformationContext, @@ -108,10 +109,16 @@ export function transformPropertyAccessExpressionWithCapture( node: ts.PropertyAccessExpression, thisValueCapture: lua.Identifier | undefined ): ExpressionWithThisValue { - const property = node.name.text; const type = context.checker.getTypeAtLocation(node.expression); const isOptionalLeft = isOptionalContinuation(node.expression); + let property = node.name.text; + const symbol = context.checker.getSymbolAtLocation(node.name); + const customName = getCustomNameFromSymbol(symbol); + if (customName) { + property = customName; + } + const constEnumValue = tryGetConstEnumValue(context, node); if (constEnumValue) { return { expression: constEnumValue }; diff --git a/test/translation/__snapshots__/transformation.spec.ts.snap b/test/translation/__snapshots__/transformation.spec.ts.snap index 48d2a7f9a..2832f2cd6 100644 --- a/test/translation/__snapshots__/transformation.spec.ts.snap +++ b/test/translation/__snapshots__/transformation.spec.ts.snap @@ -24,6 +24,8 @@ escapedCharsInTemplateString = "\\\\ \\0 \\b \\t \\n \\v \\f \\" ' \`" nonEmptyTemplateString = ("Level 0: \\n\\t " .. ("Level 1: \\n\\t\\t " .. ("Level 3: \\n\\t\\t\\t " .. "Last level \\n --") .. " \\n --") .. " \\n --") .. " \\n --"" `; +exports[`Transformation (customNameWithNoSelf) 1`] = `"TestNamespace.pass()"`; + exports[`Transformation (exportStatement) 1`] = ` "local ____exports = {} local xyz = 4 diff --git a/test/translation/transformation/customNameWithNoSelf.ts b/test/translation/transformation/customNameWithNoSelf.ts new file mode 100644 index 000000000..73175ccdc --- /dev/null +++ b/test/translation/transformation/customNameWithNoSelf.ts @@ -0,0 +1,7 @@ +/** @noSelf */ +declare namespace TestNamespace { + /** @customName pass */ + function fail(): void; +} + +TestNamespace.fail();