[IR][Tests] Run pre-serialization lowerings for diagnostics tests with backend

^KT-72593
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunError.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunError.kt
index 8bf0c3d..c3a9462 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunError.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunError.kt
@@ -1,3 +1,6 @@
+// DONT_TARGET_EXACT_BACKEND: JS_IR
+// KT-74384: When upgradeCallableReferencesPhase will run for JS_IR, source locations will be corrected
+
 // LANGUAGE: +ForbidExposureOfPrivateTypesInNonPrivateInlineFunctionsInKlibs
 // DIAGNOSTICS: -NOTHING_TO_INLINE
 // FIR_IDENTICAL
@@ -6,6 +9,6 @@
     fun foo(): Int
 }
 
-inline fun publicInlineFun(): Int = (<!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>I { 1 }<!>).<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>foo<!>()
+inline fun publicInlineFun(): Int = (I <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>{ 1 }<!>).<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>foo<!>()
 
-internal inline fun internalInlineFun(): Int = (<!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>I { 1 }<!>).<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>foo<!>()
+internal inline fun internalInlineFun(): Int = (I <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>{ 1 }<!>).<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>foo<!>()
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunWarning.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunWarning.kt
index 84f238b..3dd6a8c 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunWarning.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunWarning.kt
@@ -1,3 +1,6 @@
+// DONT_TARGET_EXACT_BACKEND: JS_IR
+// KT-74384: When upgradeCallableReferencesPhase will run for JS_IR, source locations will be corrected
+
 // LANGUAGE: -ForbidExposureOfPrivateTypesInNonPrivateInlineFunctionsInKlibs
 // DIAGNOSTICS: -NOTHING_TO_INLINE
 // FIR_IDENTICAL
@@ -6,6 +9,6 @@
     fun foo(): Int
 }
 
-inline fun publicInlineFun(): Int = (<!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>I { 1 }<!>).<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>foo<!>()
+inline fun publicInlineFun(): Int = (I <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>{ 1 }<!>).<!NON_PUBLIC_CALL_FROM_PUBLIC_INLINE!>foo<!>()
 
-internal inline fun internalInlineFun(): Int = (<!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>I { 1 }<!>).<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>foo<!>()
+internal inline fun internalInlineFun(): Int = (I <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>{ 1 }<!>).<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>foo<!>()
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.diag.txt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.diag.txt
index 12ef8f2..00133a0 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.diag.txt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.diag.txt
@@ -10,6 +10,9 @@
 
 /privateTypesInsideInternalInlineFunctionError.kt:36:5: error: Public-API inline function accesses a non Public-API declaration
 
+/privateTypesInsideInternalInlineFunctionError.kt:38:5: error: Public-API inline function accesses a non Public-API declaration A. This could happen as a result of cascaded inlining of the following functions:
+FUN name:privateInline visibility:private modality:FINAL <> () returnType:kotlin.Any [inline]
+
 /privateTypesInsideInternalInlineFunctionError.kt:39:19: error: Public-API inline function accesses a non Public-API declaration
 
 /privateTypesInsideInternalInlineFunctionError.kt:40:5: error: Public-API inline function accesses a non Public-API declaration
@@ -36,6 +39,9 @@
 
 /privateTypesInsideInternalInlineFunctionError.kt:55:13: error: Public-API inline function accesses a non Public-API declaration
 
+/privateTypesInsideInternalInlineFunctionError.kt:56:13: error: Public-API inline function accesses a non Public-API declaration A. This could happen as a result of cascaded inlining of the following functions:
+FUN name:privateInline visibility:private modality:FINAL <> () returnType:kotlin.Any [inline]
+
 /privateTypesInsideInternalInlineFunctionError.kt:57:27: error: Public-API inline function accesses a non Public-API declaration
 
 /privateTypesInsideInternalInlineFunctionError.kt:58:13: error: Public-API inline function accesses a non Public-API declaration
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.kt
index 254f394..d6d12d6 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionError.kt
@@ -35,7 +35,7 @@
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>makeLocal()<!>
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>makeEffectivelyPrivateLocal()<!>
     publicMakeLocal()
-    privateInline()
+    <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_ERROR!>privateInline()<!>
     class Local : <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>Generic<A>()<!> {}
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>val withContext = <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>makeWithContext()<!><!>
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>withContext<!>.toString()
@@ -53,7 +53,7 @@
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>makeLocal()<!>
             publicMakeLocal()
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>makeEffectivelyPrivateLocal()<!>
-            privateInline()
+            <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_ERROR!>privateInline()<!>
             class Local : <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>Generic<A>()<!> {}
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>null as A<!>
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_ERROR!>null as A.Nested<!>
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.diag.txt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.diag.txt
index d22aacd..8dfd6a0 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.diag.txt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.diag.txt
@@ -10,6 +10,9 @@
 
 /privateTypesInsideInternalInlineFunctionWarning.kt:36:5: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
 
+/privateTypesInsideInternalInlineFunctionWarning.kt:38:5: warning: Public-API inline function accesses a non Public-API declaration A. This could happen as a result of cascaded inlining of the following functions:
+FUN name:privateInline visibility:private modality:FINAL <> () returnType:kotlin.Any [inline]. This will become an error in a future release.
+
 /privateTypesInsideInternalInlineFunctionWarning.kt:39:19: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
 
 /privateTypesInsideInternalInlineFunctionWarning.kt:40:5: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
@@ -36,6 +39,9 @@
 
 /privateTypesInsideInternalInlineFunctionWarning.kt:55:13: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
 
+/privateTypesInsideInternalInlineFunctionWarning.kt:56:13: warning: Public-API inline function accesses a non Public-API declaration A. This could happen as a result of cascaded inlining of the following functions:
+FUN name:privateInline visibility:private modality:FINAL <> () returnType:kotlin.Any [inline]. This will become an error in a future release.
+
 /privateTypesInsideInternalInlineFunctionWarning.kt:57:27: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
 
 /privateTypesInsideInternalInlineFunctionWarning.kt:58:13: warning: Public-API inline function accesses a non Public-API declaration. This will become an error in a future release.
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.kt
index 9a21704..da60ba0 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateTypesInsideInternalInlineFunctionWarning.kt
@@ -35,7 +35,7 @@
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>makeLocal()<!>
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>makeEffectivelyPrivateLocal()<!>
     publicMakeLocal()
-    privateInline()
+    <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_WARNING!>privateInline()<!>
     class Local : <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>Generic<A>()<!> {}
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>val withContext = <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>makeWithContext()<!><!>
     <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>withContext<!>.toString()
@@ -53,7 +53,7 @@
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>makeLocal()<!>
             publicMakeLocal()
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>makeEffectivelyPrivateLocal()<!>
-            privateInline()
+            <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_WARNING!>privateInline()<!>
             class Local : <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>Generic<A>()<!> {}
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>null as A<!>
             <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_WARNING!>null as A.Nested<!>
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunError.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunError.kt
index 52b7a59..db322be 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunError.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunError.kt
@@ -10,5 +10,5 @@
 private inline fun privateMethod(): Foo = FooImpl()
 
 internal inline fun internalMethod(): Foo {
-    return privateMethod()
+    return <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_ERROR!>privateMethod()<!>
 }
\ No newline at end of file
diff --git a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunWarning.kt b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunWarning.kt
index 3e14938..1218ff1 100644
--- a/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunWarning.kt
+++ b/compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/topLevelPrivate/leakingPrivateClassThroughtPrivateTopLevelFunWarning.kt
@@ -10,5 +10,5 @@
 private inline fun privateMethod(): Foo = FooImpl()
 
 internal inline fun internalMethod(): Foo {
-    return privateMethod()
+    return <!IR_PRIVATE_TYPE_USED_IN_NON_PRIVATE_INLINE_FUNCTION_CASCADING_WARNING!>privateMethod()<!>
 }
\ No newline at end of file
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractFirPsiJsDiagnosticTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractFirPsiJsDiagnosticTest.kt
index ec17dc9..5a22d93 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractFirPsiJsDiagnosticTest.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractFirPsiJsDiagnosticTest.kt
@@ -86,8 +86,12 @@
 abstract class AbstractFirJsDiagnosticWithBackendTestBase(parser: FirParser) : AbstractFirJsDiagnosticTestBase(parser) {
     override fun configure(builder: TestConfigurationBuilder) = with(builder) {
         super.configure(builder)
+        defaultDirectives {
+            LANGUAGE with "+${LanguageFeature.IrInlinerBeforeKlibSerialization.name}"
+        }
 
         facadeStep(::Fir2IrResultsConverter)
+        facadeStep(::JsIrInliningFacade)
         facadeStep(::FirJsKlibSerializerFacade)
 
         // TODO: Currently do not run lowerings, because they don't report anything;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsKlibDiagnosticsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsKlibDiagnosticsTestGenerated.java
index f66e8ab..ca32b39 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsKlibDiagnosticsTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsKlibDiagnosticsTestGenerated.java
@@ -126,18 +126,6 @@
       public void testLeakingPrivateClassConstructorWarning() {
         runTest("compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/leakingPrivateClassConstructorWarning.kt");
       }
-
-      @Test
-      @TestMetadata("usePrivateFunInterfaceFromInlineFunError.kt")
-      public void testUsePrivateFunInterfaceFromInlineFunError() {
-        runTest("compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunError.kt");
-      }
-
-      @Test
-      @TestMetadata("usePrivateFunInterfaceFromInlineFunWarning.kt")
-      public void testUsePrivateFunInterfaceFromInlineFunWarning() {
-        runTest("compiler/testData/diagnostics/klibSerializationTests/privateTypeUsageInsideNonPrivateInlineFunction/privateMember/usePrivateFunInterfaceFromInlineFunWarning.kt");
-      }
     }
 
     @Nested
diff --git a/native/native.tests/klib-ir-inliner/tests/org/jetbrains/kotlin/konan/test/diagnostics/AbstractDiagnosticsNativeTest.kt b/native/native.tests/klib-ir-inliner/tests/org/jetbrains/kotlin/konan/test/diagnostics/AbstractDiagnosticsNativeTest.kt
index 5c31f11..eb46aab 100644
--- a/native/native.tests/klib-ir-inliner/tests/org/jetbrains/kotlin/konan/test/diagnostics/AbstractDiagnosticsNativeTest.kt
+++ b/native/native.tests/klib-ir-inliner/tests/org/jetbrains/kotlin/konan/test/diagnostics/AbstractDiagnosticsNativeTest.kt
@@ -5,9 +5,11 @@
 
 package org.jetbrains.kotlin.konan.test.diagnostics
 
+import org.jetbrains.kotlin.config.LanguageFeature
 import org.jetbrains.kotlin.konan.target.HostManager
 import org.jetbrains.kotlin.konan.test.Fir2IrNativeResultsConverter
 import org.jetbrains.kotlin.konan.test.FirNativeKlibSerializerFacade
+import org.jetbrains.kotlin.konan.test.converters.NativeInliningFacade
 import org.jetbrains.kotlin.platform.konan.NativePlatforms
 import org.jetbrains.kotlin.test.Constructor
 import org.jetbrains.kotlin.test.FirParser
@@ -30,6 +32,7 @@
 import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
 import org.jetbrains.kotlin.test.configuration.configurationForClassicAndFirTestsAlongside
 import org.jetbrains.kotlin.test.configuration.enableLazyResolvePhaseChecking
+import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE
 import org.jetbrains.kotlin.test.services.LibraryProvider
 import org.junit.jupiter.api.Assumptions
 import java.io.File
@@ -115,10 +118,13 @@
         globalDefaults {
             targetBackend = TargetBackend.NATIVE
         }
-
+        defaultDirectives {
+            LANGUAGE with "+${LanguageFeature.IrInlinerBeforeKlibSerialization.name}"
+        }
         useAdditionalService(::LibraryProvider)
 
         facadeStep(::Fir2IrNativeResultsConverter)
+        facadeStep(::NativeInliningFacade)
         facadeStep(::FirNativeKlibSerializerFacade)
 
         klibArtifactsHandlersStep {