From 6e98b81f3ab9e719eac6ec9c2ecbc5141a752e46 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 21 Jan 2021 13:58:31 +0300 Subject: [PATCH] [JS IR] Use recursive isExported for stable name detection ^KT-44469 fixed --- .../kotlin/ir/backend/js/export/ExportModelGenerator.kt | 8 ++++---- .../src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt index c38d763aa0e..abbe7072fc8 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt @@ -391,11 +391,11 @@ private fun getExportCandidate(declaration: IrDeclaration): IrDeclarationWithNam return declaration } -private fun shouldDeclarationBeExported(declaration: IrDeclarationWithName, context: JsIrBackendContext): Boolean { - if (declaration.fqNameWhenAvailable in context.additionalExportedDeclarationNames) +private fun shouldDeclarationBeExported(declaration: IrDeclarationWithName, context: JsIrBackendContext?): Boolean { + if (context?.additionalExportedDeclarationNames?.contains(declaration.fqNameWhenAvailable) == true) return true - if (declaration in context.additionalExportedDeclarations) + if (context?.additionalExportedDeclarations?.contains(declaration) == true) return true if (declaration.isJsExport()) @@ -408,7 +408,7 @@ private fun shouldDeclarationBeExported(declaration: IrDeclarationWithName, cont } } -fun IrDeclaration.isExported(context: JsIrBackendContext): Boolean { +fun IrDeclaration.isExported(context: JsIrBackendContext?): Boolean { val candidate = getExportCandidate(this) ?: return false return shouldDeclarationBeExported(candidate, context) } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt index 010d91cc531..59b186868fa 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.JsLoweredDeclarationOrigin +import org.jetbrains.kotlin.ir.backend.js.export.isExported import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl @@ -51,7 +52,7 @@ fun IrFunction.hasStableJsName(): Boolean { else -> true } - return (isEffectivelyExternal() || getJsName() != null || isJsExport() || parentClassOrNull?.isJsExport() == true) && namedOrMissingGetter + return (isEffectivelyExternal() || getJsName() != null || isExported(null)) && namedOrMissingGetter } fun IrFunction.isEqualsInheritedFromAny() =