diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index 94a087f7ad2..e10172e29a1 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -1359,6 +1359,7 @@ open class IrFileSerializer( .build() open fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean = false + open fun backendSpecificExplicitRootExclusion(node: IrAnnotationContainer): Boolean = false open fun keepOrderOfProperties(property: IrProperty): Boolean = !property.isConst open fun backendSpecificSerializeAllMembers(irClass: IrClass) = false @@ -1376,6 +1377,7 @@ open class IrFileSerializer( if (backendSpecificExplicitRoot(file)) { for (declaration in file.declarations) { + if (backendSpecificExplicitRootExclusion(declaration)) continue proto.addExplicitlyExportedToCompiler(serializeIrSymbol(declaration.symbol)) } } else { diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrFileSerializer.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrFileSerializer.kt index c8f7a7b717e..60da7e520ec 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrFileSerializer.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrFileSerializer.kt @@ -39,9 +39,14 @@ class JsIrFileSerializer( ) { companion object { private val JS_EXPORT_FQN = FqName("kotlin.js.JsExport") + private val JS_EXPORT_IGNORE_FQN = FqName("kotlin.js.JsExport.Ignore") } override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean { - return node.annotations.hasAnnotation(JS_EXPORT_FQN) + return node.annotations.hasAnnotation(JS_EXPORT_FQN) && !backendSpecificExplicitRootExclusion(node) + } + + override fun backendSpecificExplicitRootExclusion(node: IrAnnotationContainer): Boolean { + return node.annotations.hasAnnotation(JS_EXPORT_IGNORE_FQN) } }