wip - check for ir providers
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
index f1c27f1..5d8a914 100644
--- a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
+++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/loadNativeKlibs.kt
@@ -10,6 +10,7 @@
 import org.jetbrains.kotlin.backend.common.loadFriendLibraries
 import org.jetbrains.kotlin.backend.common.reportLoadingProblemsIfAny
 import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.konan.library.KLIB_INTEROP_IR_PROVIDER_IDENTIFIER
 import org.jetbrains.kotlin.konan.target.KonanTarget
 import org.jetbrains.kotlin.library.KotlinAbiVersion
 import org.jetbrains.kotlin.library.loader.KlibLoader
@@ -36,7 +37,7 @@
 ): LoadedKlibs {
     val result = KlibLoader {
         libraryPaths(libraryPaths)
-        platformChecker(KlibPlatformChecker.Native(nativeTarget.name))
+        platformChecker(KlibPlatformChecker.Native(nativeTarget.name, knownIrProviders = setOf(KLIB_INTEROP_IR_PROVIDER_IDENTIFIER)))
         maxPermittedAbiVersion(KotlinAbiVersion.CURRENT)
     }.load()
         .apply { reportLoadingProblemsIfAny(configuration, allAsErrors = true) }
diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/loader/KlibPlatformChecker.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/loader/KlibPlatformChecker.kt
index b0ef606..f0c7dc0 100644
--- a/compiler/util-klib/src/org/jetbrains/kotlin/library/loader/KlibPlatformChecker.kt
+++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/loader/KlibPlatformChecker.kt
@@ -8,6 +8,7 @@
 import org.jetbrains.kotlin.library.BaseKotlinLibrary
 import org.jetbrains.kotlin.library.builtInsPlatform
 import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
+import org.jetbrains.kotlin.library.irProviderName
 import org.jetbrains.kotlin.library.loader.KlibLoaderResult.ProblemCase.PlatformCheckMismatch
 import org.jetbrains.kotlin.library.nativeTargets
 import org.jetbrains.kotlin.library.wasmTargets
@@ -19,7 +20,10 @@
      * Checks if a library is a Kotlin/Native library.
      * If [target] is not null, then additionally checks that the given target is supported in the library.
      */
-    class Native(private val target: String? = null) : KlibPlatformChecker {
+    class Native(
+        private val target: String? = null,
+        private val knownIrProviders: Set<String> = emptySet()
+    ) : KlibPlatformChecker {
         override fun check(library: BaseKotlinLibrary): PlatformCheckMismatch? =
             checkPlatform(
                 expectedPlatform = BuiltInsPlatform.NATIVE,
@@ -28,7 +32,25 @@
                 platform = BuiltInsPlatform.NATIVE,
                 expectedTarget = target,
                 actualTargets = library.nativeTargets
+            ) ?: checkIrProvider(
+                expectedIrProviders = knownIrProviders,
+                actualIrProvider = library.irProviderName
             )
+
+        companion object {
+            private fun checkIrProvider(
+                expectedIrProviders: Set<String>,
+                actualIrProvider: String?
+            ): PlatformCheckMismatch? {
+                if (actualIrProvider == null || actualIrProvider in expectedIrProviders) return null
+
+                return PlatformCheckMismatch(
+                    property = "irProvider",
+                    expected = if (expectedIrProviders.isEmpty()) "<none>" else expectedIrProviders.joinToString(),
+                    actual = actualIrProvider
+                )
+            }
+        }
     }
 
     /**