[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 {