[Native] `isFromCInteropLibrary()`: Don't process IR based descriptors

The goal of `isFromCInteropLibrary()` function is to check whether
the given declaration is from a C-interop library. For such
declarations either of the following conditions should be met:

1. It is Fir2Ir lazy declaration built around the corresponding
   FIR declaration. And we can look into the FIR declaration to
   figure out it's <source>.

2. It is an IR declaration built around the deserialized metadata (K1).
   In different compiler modes it can be either an instance of
   `IrLazyDeclarationBase`, or an instance of `IrDeclaration`, but
   always with the appropriate DeclarationDescriptor.

That means the following: If we meet an IR declaration that is not
Fir2Ir lazy declaration and has no real descriptor, then it can't
be a declaration deserialized from a C-interop library.

^KT-69563
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrUtils.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrUtils.kt
index 5ce7b42..26cc2b0 100644
--- a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrUtils.kt
+++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrUtils.kt
@@ -70,7 +70,10 @@
     } else {
         // There can be no descriptor. So take if with caution.
         val symbol = topLevelDeclaration.symbol
-        if (symbol.hasDescriptor) symbol.descriptor else null
+        if (symbol.hasDescriptor)
+            symbol.descriptor.takeUnless { it is IrBasedDeclarationDescriptor<*> }
+        else
+            null
     }
 
     return (topLevelDeclarationDescriptor?.containingDeclaration as? PackageFragmentDescriptor)?.source
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanDeclarationTable.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanDeclarationTable.kt
index 5006f67..e40eec4 100644
--- a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanDeclarationTable.kt
+++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanDeclarationTable.kt
@@ -30,14 +30,8 @@
 
     // TODO: We should get rid of this extension point in favor of proper support in IR-based mangler.
     @OptIn(ObsoleteDescriptorBasedAPI::class)
-    override fun tryComputeBackendSpecificSignature(declaration: IrDeclaration): IdSignature? {
-        // TODO: this is a workaround for KT-69563, need to find a better fix
-        try {
+    override fun tryComputeBackendSpecificSignature(declaration: IrDeclaration): IdSignature? =
             if (declaration.isFromCInteropLibrary()) {
-                return signatureIdComposer.computeSignature(declaration)
-            } else return null
-        } catch (e: Exception) {
-            return null
-        }
-    }
+                signatureIdComposer.computeSignature(declaration)
+            } else null
 }
\ No newline at end of file