From 03b9caa43921da0db005a8cd7f5bcd0db567a41c Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Wed, 20 Oct 2021 18:32:59 +0300 Subject: [PATCH] [JS IR] export external declarations --- .../transformers/irToJs/IrModuleToJsTransformerTmp.kt | 10 ++++++++-- .../selectiveExport/selectiveExport.d.ts | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformerTmp.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformerTmp.kt index f69233bcb7c..0eba123859d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformerTmp.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformerTmp.kt @@ -47,7 +47,7 @@ class IrModuleToJsTransformerTmp( val exportData = modules.associate { module -> module to module.files.associate { file -> - file to exportModelGenerator.generateExport(file) + file to exportModelGenerator.generateExportWithExternals(file) } } @@ -72,7 +72,7 @@ class IrModuleToJsTransformerTmp( val exportModelGenerator = ExportModelGenerator(backendContext, generateNamespacesForPackages = true) val exportData = files.associate { file -> - file to exportModelGenerator.generateExport(file) + file to exportModelGenerator.generateExportWithExternals(file) } files.forEach { StaticMembersLowering(backendContext).lower(it) } @@ -92,6 +92,12 @@ class IrModuleToJsTransformerTmp( return result } + private fun ExportModelGenerator.generateExportWithExternals(irFile: IrFile): List { + val exports = generateExport(irFile) + val additionalExports = backendContext.externalPackageFragment[irFile.symbol]?.let { generateExport(it) } ?: emptyList() + return additionalExports + exports + } + private fun generateProgramFragments( modules: Iterable, exportData: Map>>, diff --git a/js/js.translator/testData/typescript-export/selectiveExport/selectiveExport.d.ts b/js/js.translator/testData/typescript-export/selectiveExport/selectiveExport.d.ts index 1080cdfff6d..03fc662dcd5 100644 --- a/js/js.translator/testData/typescript-export/selectiveExport/selectiveExport.d.ts +++ b/js/js.translator/testData/typescript-export/selectiveExport/selectiveExport.d.ts @@ -6,10 +6,6 @@ declare namespace JS_TESTS { interface ExportedInternalInterface { } } - namespace foo { - interface FileLevelExportedExternalInterface { - } - } namespace foo { const exportedVal: number; function exportedFun(): number; @@ -18,6 +14,10 @@ declare namespace JS_TESTS { readonly value: number; } } + namespace foo { + interface FileLevelExportedExternalInterface { + } + } namespace foo { const fileLevelExportedVal: number; function fileLevelExportedFun(): number;