IR Inliner: More precise checks for KT-69457 & KT-69457

^KT-69700
diff --git a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/InlineCallableReferenceToLambda.kt b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/InlineCallableReferenceToLambda.kt
index 1c14f66..eca2a4d 100644
--- a/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/InlineCallableReferenceToLambda.kt
+++ b/compiler/ir/ir.inline/src/org/jetbrains/kotlin/ir/inline/InlineCallableReferenceToLambda.kt
@@ -29,7 +29,7 @@
 import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
 import org.jetbrains.kotlin.name.Name
 
-const val STUB_FOR_INLINING = "stub_for_inlining"
+val STUB_FOR_INLINING = Name.identifier("stub_for_inlining")
 
 // This lowering transforms CR passed to inline function to lambda which would be inlined
 //
@@ -98,7 +98,7 @@
         context.irFactory.buildFun {
             setSourceRange(this@wrapField)
             origin = LoweredDeclarationOrigins.INLINE_LAMBDA
-            name = Name.identifier(STUB_FOR_INLINING)
+            name = STUB_FOR_INLINING
             visibility = DescriptorVisibilities.LOCAL
             returnType = field.type
             isInline = true
@@ -121,7 +121,7 @@
         context.irFactory.buildFun {
             setSourceRange(this@wrapFunction)
             origin = LoweredDeclarationOrigins.INLINE_LAMBDA
-            name = Name.identifier(STUB_FOR_INLINING)
+            name = STUB_FOR_INLINING
             visibility = DescriptorVisibilities.LOCAL
             returnType = ((type as IrSimpleType).arguments.last() as IrTypeProjection).type
             isSuspend = referencedFunction.isSuspend
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
index 84457a8..9ed12e2 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
@@ -25,7 +25,6 @@
 import org.jetbrains.kotlin.backend.konan.lower.InitializersLowering
 import org.jetbrains.kotlin.backend.konan.optimizations.NativeForLoopsLowering
 import org.jetbrains.kotlin.config.KlibConfigurationKeys
-import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
 import org.jetbrains.kotlin.ir.IrElement
 import org.jetbrains.kotlin.ir.declarations.IrDeclaration
 import org.jetbrains.kotlin.ir.declarations.IrFile
@@ -34,6 +33,7 @@
 import org.jetbrains.kotlin.ir.expressions.IrBody
 import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
 import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
+import org.jetbrains.kotlin.ir.inline.STUB_FOR_INLINING
 import org.jetbrains.kotlin.ir.inline.SyntheticAccessorLowering
 import org.jetbrains.kotlin.ir.inline.isConsideredAsPrivateForInlining
 import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration
@@ -80,7 +80,7 @@
                         when {
                             // TODO: remove this condition after the fix of KT-69470:
                             inlineFunctionUseSite is IrFunctionReference &&
-                                    inlineFunction.visibility == DescriptorVisibilities.LOCAL -> true // temporarily permitted
+                                    inlineFunction.name == STUB_FOR_INLINING -> true // temporarily permitted
 
                             inlineFunction.isConsideredAsPrivateForInlining() -> false // forbidden
 
@@ -105,7 +105,9 @@
                             inlineFunction.isExternal -> true // temporarily permitted
 
                             // TODO: remove this condition after the fix of KT-69457:
-                            inlineFunctionUseSite is IrFunctionReference && !inlineFunction.isReifiable() -> true // temporarily permitted
+                            inlineFunctionUseSite is IrFunctionReference &&
+                                    inlineFunction.name != STUB_FOR_INLINING &&
+                                    !inlineFunction.isReifiable() -> true // temporarily permitted
 
                             else -> false // forbidden
                         }