From d75790569632d51f3f46e4d91e98ea8a7f69a4e0 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Mon, 9 Jun 2025 03:38:53 -0700 Subject: [PATCH] Update the transform not to rename member expression fragments Summary: Changelog: [Internal] Differential Revision: D76258179 --- .../renameDefaultExportedIdentifiers-test.js | 21 +++++++++++++++---- .../renameDefaultExportedIdentifiers.js | 7 ++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/scripts/build-types/transforms/__tests__/renameDefaultExportedIdentifiers-test.js b/scripts/build-types/transforms/__tests__/renameDefaultExportedIdentifiers-test.js index 437ca32691ea..532a4d5ed103 100644 --- a/scripts/build-types/transforms/__tests__/renameDefaultExportedIdentifiers-test.js +++ b/scripts/build-types/transforms/__tests__/renameDefaultExportedIdentifiers-test.js @@ -49,12 +49,11 @@ describe('renameDefaultExportedIdentifiers', () => { test('should rename local class name which is default-exported', async () => { const code = ` - class ExportedClass {}; + class ExportedClass {} export default ExportedClass;`; const result = await translate(code); expect(result).toMatchInlineSnapshot(` "class ExportedClass_default {} - ; export default ExportedClass_default;" `); }); @@ -70,13 +69,27 @@ describe('renameDefaultExportedIdentifiers', () => { test('should rename local function name which is default-exported', async () => { const code = ` - function exportedFunction() {}; + function exportedFunction() {} export default exportedFunction;`; const result = await translate(code); expect(result).toMatchInlineSnapshot(` "function exportedFunction_default() {} - ; export default exportedFunction_default;" `); }); + + test('should not rename identifiers with the same name in member expressions', async () => { + const code = ` + import Other from 'Other'; + type Type = typeof Other.Exported; + class Exported {} + export default Exported;`; + const result = await translate(code); + expect(result).toMatchInlineSnapshot(` + "import Other from 'Other'; + type Type = typeof Other.Exported; + class Exported_default {} + export default Exported_default;" + `); + }); }); diff --git a/scripts/build-types/transforms/renameDefaultExportedIdentifiers.js b/scripts/build-types/transforms/renameDefaultExportedIdentifiers.js index af68928d900c..30ab96dbc0cf 100644 --- a/scripts/build-types/transforms/renameDefaultExportedIdentifiers.js +++ b/scripts/build-types/transforms/renameDefaultExportedIdentifiers.js @@ -97,7 +97,12 @@ const visitor: PluginObj = { const newName = `${localSymbol}_default`; nodePath.traverse({ Identifier(innerPath) { - if (innerPath.node.name === localSymbol) { + if ( + innerPath.node.name === localSymbol && + !innerPath.findParent( + path => t.isMemberExpression(path) || t.isTSQualifiedName(path), + ) + ) { innerPath.node.name = newName; } },