[KLIB] Corresponding fix to kotlin (@JsExport)
(cherry picked from commit 0142385cdc78af49890374c7aec1db25ddd13778)
This commit is contained in:
committed by
Vasily Levchenko
parent
e81b6b8eda
commit
c16cffa9f4
+9
-4
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user