From f276fe650629775f805d5ea5972f6bb3a04ec44a Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 5 Oct 2023 12:21:51 +0200 Subject: [PATCH] [KLIB] Add a reliable mechanism to check if KLIB has IR inside ^KT-62341 --- .../common/serialization/IncrementalCompilationSupport.kt | 1 + .../src/org/jetbrains/kotlin/library/KotlinLibrary.kt | 1 + .../org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt index a7687aecfe3..01d8bf49261 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.library.impl.* class ICData(val icData: List, val containsErrorCode: Boolean) class ICKotlinLibrary(private val icData: List) : IrLibrary { + override val hasIr get() = true override val dataFlowGraph: ByteArray? = null private inline fun > Array.itemBytes(fileIndex: Int, key: K, factory: () -> R): ByteArray { diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt index 7c3339f0b4f..8e0c29a374d 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt @@ -75,6 +75,7 @@ interface MetadataLibrary { } interface IrLibrary { + val hasIr: Boolean val dataFlowGraph: ByteArray? fun irDeclaration(index: Int, fileIndex: Int): ByteArray fun type(index: Int, fileIndex: Int): ByteArray diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt index c5ca516f013..e9f98ea89dd 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt @@ -89,6 +89,12 @@ class MetadataLibraryImpl( abstract class IrLibraryImpl( val access: IrLibraryAccess ) : IrLibrary { + override val hasIr by lazy { + access.inPlace { it: IrKotlinLibraryLayout -> + it.irDir.exists + } + } + override val dataFlowGraph by lazy { access.inPlace { it: IrKotlinLibraryLayout -> it.dataFlowGraphFile.let { if (it.exists) it.readBytes() else null }