[KLIB] Corresponding fix to kotlin (@JsExport)

(cherry picked from commit 0142385cdc78af49890374c7aec1db25ddd13778)
This commit is contained in:
Roman Artemev
2020-08-20 18:19:41 +03:00
committed by Vasily Levchenko
parent e81b6b8eda
commit c16cffa9f4
@@ -5,6 +5,7 @@ import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
import org.jetbrains.kotlin.backend.konan.RuntimeNames
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.symbols.IrSymbol
@@ -18,11 +19,15 @@ class KonanIrFileSerializer(
bodiesOnlyForInlines: Boolean = false
): IrFileSerializer(logger, declarationTable, expectDescriptorToSymbol, skipExpects = skipExpects, bodiesOnlyForInlines = bodiesOnlyForInlines) {
override fun backendSpecificExplicitRoot(declaration: IrFunction) =
declaration.annotations.hasAnnotation(RuntimeNames.exportForCppRuntime)
override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean {
val fqn = when (node) {
is IrFunction -> RuntimeNames.exportForCppRuntime
is IrClass -> RuntimeNames.exportTypeInfoAnnotation
else -> return false
}
override fun backendSpecificExplicitRoot(declaration: IrClass) =
declaration.annotations.hasAnnotation(RuntimeNames.exportTypeInfoAnnotation)
return node.annotations.hasAnnotation(fqn)
}
override fun backendSpecificSerializeAllMembers(irClass: IrClass) = !KonanFakeOverrideClassFilter.constructFakeOverrides(irClass)
}