[JVM IR] Fix jvm linker

This commit is contained in:
Roman Artemev
2020-04-20 13:55:44 +03:00
committed by romanart
parent 5ea309d578
commit c38ba45c1b
2 changed files with 8 additions and 2 deletions
@@ -38,7 +38,7 @@ abstract class IrModuleDeserializer(val moduleDescriptor: ModuleDescriptor) {
abstract fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol
open fun declareIrSymbol(symbol: IrSymbol) {
assert(symbol.isPublicApi)
assert(symbol.isPublicApi) { "Symbol is not public API: ${symbol.descriptor}" }
assert(symbol.descriptor !is WrappedDeclarationDescriptor<*>)
deserializeIrSymbol(symbol.signature, symbol.kind())
}
@@ -175,6 +175,12 @@ class IrModuleDeserializerWithBuiltIns(
return delegate.deserializeIrSymbol(idSig, symbolKind)
}
override fun declareIrSymbol(symbol: IrSymbol) {
if (symbol.isPublicApi && checkIsFunctionInterface(symbol.signature))
resolveFunctionalInterface(symbol.signature, symbol.kind())
else delegate.declareIrSymbol(symbol)
}
override fun postProcess() {
delegate.postProcess()
}
@@ -33,7 +33,7 @@ class JvmIrLinker(currentModule: ModuleDescriptor?, logger: LoggingContext, buil
private val javaName = Name.identifier("java")
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean =
moduleDescriptor.name.asString() == "<built-ins module>"
moduleDescriptor.name.asString().startsWith("<dependencies of ")
// TODO: implement special Java deserializer
override fun createModuleDeserializer(moduleDescriptor: ModuleDescriptor, klib: IrLibrary?, strategy: DeserializationStrategy): IrModuleDeserializer {