[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.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)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user