[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.common.serialization.IrFileSerializer
import org.jetbrains.kotlin.backend.konan.RuntimeNames import org.jetbrains.kotlin.backend.konan.RuntimeNames
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor 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.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol
@@ -18,11 +19,15 @@ class KonanIrFileSerializer(
bodiesOnlyForInlines: Boolean = false bodiesOnlyForInlines: Boolean = false
): IrFileSerializer(logger, declarationTable, expectDescriptorToSymbol, skipExpects = skipExpects, bodiesOnlyForInlines = bodiesOnlyForInlines) { ): IrFileSerializer(logger, declarationTable, expectDescriptorToSymbol, skipExpects = skipExpects, bodiesOnlyForInlines = bodiesOnlyForInlines) {
override fun backendSpecificExplicitRoot(declaration: IrFunction) = override fun backendSpecificExplicitRoot(node: IrAnnotationContainer): Boolean {
declaration.annotations.hasAnnotation(RuntimeNames.exportForCppRuntime) val fqn = when (node) {
is IrFunction -> RuntimeNames.exportForCppRuntime
is IrClass -> RuntimeNames.exportTypeInfoAnnotation
else -> return false
}
override fun backendSpecificExplicitRoot(declaration: IrClass) = return node.annotations.hasAnnotation(fqn)
declaration.annotations.hasAnnotation(RuntimeNames.exportTypeInfoAnnotation) }
override fun backendSpecificSerializeAllMembers(irClass: IrClass) = !KonanFakeOverrideClassFilter.constructFakeOverrides(irClass) override fun backendSpecificSerializeAllMembers(irClass: IrClass) = !KonanFakeOverrideClassFilter.constructFakeOverrides(irClass)
} }