diff --git a/src/transformation/utils/export.ts b/src/transformation/utils/export.ts index d509504d2..5922a9fc5 100644 --- a/src/transformation/utils/export.ts +++ b/src/transformation/utils/export.ts @@ -47,6 +47,10 @@ export function getIdentifierExportScope( return getSymbolExportScope(context, symbol); } +function isGlobalAugmentation(module: ts.ModuleDeclaration): boolean { + return (module.flags & ts.NodeFlags.GlobalAugmentation) !== 0; +} + export function getSymbolExportScope( context: TransformationContext, symbol: ts.Symbol @@ -64,6 +68,10 @@ export function getSymbolExportScope( return undefined; } + if (ts.isModuleDeclaration(scope) && isGlobalAugmentation(scope)) { + return undefined; + } + if (!isSymbolExportedFromScope(context, symbol, scope)) { return undefined; } diff --git a/test/translation/__snapshots__/transformation.spec.ts.snap b/test/translation/__snapshots__/transformation.spec.ts.snap index f4e2ce661..dda4cea2f 100644 --- a/test/translation/__snapshots__/transformation.spec.ts.snap +++ b/test/translation/__snapshots__/transformation.spec.ts.snap @@ -82,6 +82,11 @@ end return ____exports" `; +exports[`Transformation (globalAugmentation) 1`] = ` +"local ____exports = globalVariable +return ____exports" +`; + exports[`Transformation (methodRestArguments) 1`] = ` "require(\\"lualib_bundle\\"); MyClass = __TS__Class() diff --git a/test/translation/transformation/globalAugmentation.ts b/test/translation/transformation/globalAugmentation.ts new file mode 100644 index 000000000..03f2c5af2 --- /dev/null +++ b/test/translation/transformation/globalAugmentation.ts @@ -0,0 +1,5 @@ +declare global { + export const globalVariable: number; +} + +export = globalVariable;