fixup! [FIR] Report reified intersection types as errors
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kmp.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kmp.java
deleted file mode 100644
index 401ba49..0000000
--- a/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kmp.java
+++ /dev/null
@@ -1,103 +0,0 @@
-public final class UnsafePropertyInitializersKt /* UnsafePropertyInitializersKt*/ {
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.Character @org.jetbrains.annotations.NotNull() [] arrayOfCharObjects = {'C', '\u0000', '\n', '\r', '\'', '\u00FF'} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.Double @org.jetbrains.annotations.NotNull() [] arrayOfDoubleObjects = {5.0, -1.23E-7, 4.9E-324, 1.7976931348623157E308, 0.0 / 0.0, 1.0 / 0.0, -1.0 / 0.0, 0.0 / 0.0, 1.0 / 0.0, -1.0 / 0.0} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.Float @org.jetbrains.annotations.NotNull() [] arrayOfFloatObjects = {5.0f, -1.23E-7f, 1.4E-45f, 3.4028235E38f, 0.0F / 0.0F, 1.0F / 0.0F, -1.0F / 0.0F, 0.0F / 0.0F, 1.0F / 0.0F, -1.0F / 0.0F} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.Integer @org.jetbrains.annotations.NotNull() [] arrayOfIntObjects = {5, -1, 2147483647, -2147483648} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.Long @org.jetbrains.annotations.NotNull() [] arrayOfLongObjects = {5L, -1L, 9223372036854775807L, -9223372036854775808L} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.String @org.jetbrains.annotations.NotNull() [] arrayOfStrings = {"", "quotes \" ''quotes", "\r\n", "\u4F60\u597D\u4E16\u754C"} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.lang.String @org.jetbrains.annotations.NotNull() [] emptyArayOfStrings = {} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() java.util.List<@org.jetbrains.annotations.NotNull() java.lang.String> listOfStrings;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.NotNull() kotlin.annotation.AnnotationTarget @org.jetbrains.annotations.NotNull() [] arrayOfEnums = {kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.PROPERTY} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final @org.jetbrains.annotations.Nullable() java.lang.Comparable<?> @org.jetbrains.annotations.NotNull() [] arrayOfNAny = {1, 2L, "abc", kotlin.annotation.AnnotationTarget.CLASS, null} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final char @org.jetbrains.annotations.NotNull() [] arrayOfCharPrimitives = {'C', '\u0000', '\n', '\r', '\'', '\u00FF'} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final double @org.jetbrains.annotations.NotNull() [] arrayOfDoublePrimitives = {5.0, -1.23E-7, 4.9E-324, 1.7976931348623157E308, 0.0 / 0.0, 1.0 / 0.0, -1.0 / 0.0, 0.0 / 0.0, 1.0 / 0.0, -1.0 / 0.0} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final float @org.jetbrains.annotations.NotNull() [] arrayOfFloatPrimitives = {5.0f, -1.23E-7f, 1.4E-45f, 3.4028235E38f, 0.0F / 0.0F, 1.0F / 0.0F, -1.0F / 0.0F, 0.0F / 0.0F, 1.0F / 0.0F, -1.0F / 0.0F} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final int @org.jetbrains.annotations.NotNull() [] arrayOfIntPrimitives = {5, -1, 2147483647, -2147483648} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final int @org.jetbrains.annotations.NotNull() [] emptyArayOfInts = {} /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  private static final long @org.jetbrains.annotations.NotNull() [] arrayOfLongPrimitives = {5L, -1L, 9223372036854775807L, -9223372036854775808L} /* initializer type: null */;
-
-  @org.jetbrains.annotations.Nullable()
-  private static final @org.jetbrains.annotations.Nullable() java.lang.String nullable = null /* initializer type: null */;
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.Character @org.jetbrains.annotations.NotNull() [] getArrayOfCharObjects();//  getArrayOfCharObjects()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.Double @org.jetbrains.annotations.NotNull() [] getArrayOfDoubleObjects();//  getArrayOfDoubleObjects()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.Float @org.jetbrains.annotations.NotNull() [] getArrayOfFloatObjects();//  getArrayOfFloatObjects()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.Integer @org.jetbrains.annotations.NotNull() [] getArrayOfIntObjects();//  getArrayOfIntObjects()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.Long @org.jetbrains.annotations.NotNull() [] getArrayOfLongObjects();//  getArrayOfLongObjects()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.String @org.jetbrains.annotations.NotNull() [] getArrayOfStrings();//  getArrayOfStrings()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.lang.String @org.jetbrains.annotations.NotNull() [] getEmptyArayOfStrings();//  getEmptyArayOfStrings()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() java.util.List<@org.jetbrains.annotations.NotNull() java.lang.String> getListOfStrings();//  getListOfStrings()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.NotNull() kotlin.annotation.AnnotationTarget @org.jetbrains.annotations.NotNull() [] getArrayOfEnums();//  getArrayOfEnums()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final @org.jetbrains.annotations.Nullable() java.lang.Comparable<?> @org.jetbrains.annotations.NotNull() [] getArrayOfNAny();//  getArrayOfNAny()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final char @org.jetbrains.annotations.NotNull() [] getArrayOfCharPrimitives();//  getArrayOfCharPrimitives()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final double @org.jetbrains.annotations.NotNull() [] getArrayOfDoublePrimitives();//  getArrayOfDoublePrimitives()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final float @org.jetbrains.annotations.NotNull() [] getArrayOfFloatPrimitives();//  getArrayOfFloatPrimitives()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final int @org.jetbrains.annotations.NotNull() [] getArrayOfIntPrimitives();//  getArrayOfIntPrimitives()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final int @org.jetbrains.annotations.NotNull() [] getEmptyArayOfInts();//  getEmptyArayOfInts()
-
-  @org.jetbrains.annotations.NotNull()
-  public static final long @org.jetbrains.annotations.NotNull() [] getArrayOfLongPrimitives();//  getArrayOfLongPrimitives()
-
-  @org.jetbrains.annotations.Nullable()
-  public static final @org.jetbrains.annotations.Nullable() java.lang.String getNullable();//  getNullable()
-}
diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kt
index 2805c1a..fd2bfef 100644
--- a/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kt
+++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/unsafePropertyInitializers.kt
@@ -12,6 +12,6 @@
 val arrayOfFloatPrimitives = floatArrayOf(2f + 3f, -1.23E-7f, Float.MIN_VALUE, Float.MAX_VALUE, Float.NaN, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, 0.0f / 0.0f, 1.0f / 0.0f, -1.0f / 0.0f)
 val arrayOfStrings = arrayOf("", "quotes \" ''quotes", "\r\n", "你好世界")
 val arrayOfEnums = arrayOf(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
-val arrayOfNAny = arrayOf(1, 2L, "abc", AnnotationTarget.CLASS, null)
+val arrayOfNAny = arrayOf<Any?>(1, 2L, "abc", AnnotationTarget.CLASS, null)
 val emptyArayOfStrings: Array<String> = arrayOf()
 val emptyArayOfInts: IntArray = intArrayOf()
diff --git a/compiler/testData/codegen/box/callableReference/function/genericCallableReferenceArguments.kt b/compiler/testData/codegen/box/callableReference/function/genericCallableReferenceArguments.kt
index fb2b2d0..22c1d2d 100644
--- a/compiler/testData/codegen/box/callableReference/function/genericCallableReferenceArguments.kt
+++ b/compiler/testData/codegen/box/callableReference/function/genericCallableReferenceArguments.kt
@@ -22,7 +22,6 @@
 fun box(): String {
     check("", 1, ::foo, "String", "Int")
     check("", 1, ::fooReturnInt, "String", "Int")
-    check("", "", ::fooReturnInt, "String", "Any")  // KT-59348 Non-JVM backends have not "Any", but "Comparable" as common parent for Int and String
 
     check(Int::toString, ::foo, "Int", "String")
 
diff --git a/compiler/testData/codegen/box/coroutines/featureIntersection/callableReference/function/genericCallableReferenceArguments.kt b/compiler/testData/codegen/box/coroutines/featureIntersection/callableReference/function/genericCallableReferenceArguments.kt
index 47da5c4..3318a20 100644
--- a/compiler/testData/codegen/box/coroutines/featureIntersection/callableReference/function/genericCallableReferenceArguments.kt
+++ b/compiler/testData/codegen/box/coroutines/featureIntersection/callableReference/function/genericCallableReferenceArguments.kt
@@ -29,7 +29,6 @@
     builder {
         check("", 1, ::foo, "String", "Int")
         check("", 1L, ::fooReturnLong, "String", "Long")
-        check("", "", ::fooReturnLong, "String", "Any")
 
         check(Int::suspendToString, ::foo, "Int", "String")
     }
diff --git a/compiler/testData/codegen/box/inference/intersectionTypeInArguments.kt b/compiler/testData/codegen/box/inference/intersectionTypeInArguments.kt
index 98a7ada..d61fa6c 100644
--- a/compiler/testData/codegen/box/inference/intersectionTypeInArguments.kt
+++ b/compiler/testData/codegen/box/inference/intersectionTypeInArguments.kt
@@ -13,7 +13,7 @@
     }
     val b = a?.toList()
     val c = b?.takeUnless { null in it }
-    val d = c?.toTypedArray()
+    val d = c?.toTypedArray<Any?>()
     return d
 }
 
diff --git a/compiler/testData/codegen/box/multifileClasses/genericProperty.kt b/compiler/testData/codegen/box/multifileClasses/genericProperty.kt
index f477b13..2f81635 100644
--- a/compiler/testData/codegen/box/multifileClasses/genericProperty.kt
+++ b/compiler/testData/codegen/box/multifileClasses/genericProperty.kt
@@ -14,4 +14,4 @@
 
 import test.foo
 
-fun box(): String = arrayOf('O', "K").foo
+fun box(): String = arrayOf<Any>('O', "K").foo
diff --git a/compiler/testData/codegen/box/polymorphicSignature/varargOfObjects_after.kt b/compiler/testData/codegen/box/polymorphicSignature/varargOfObjects_after.kt
index 2b95a77..aa6cdbe 100644
--- a/compiler/testData/codegen/box/polymorphicSignature/varargOfObjects_after.kt
+++ b/compiler/testData/codegen/box/polymorphicSignature/varargOfObjects_after.kt
@@ -16,7 +16,7 @@
         MethodType.methodType(Any::class.java, Array<Any>::class.java)
     )
 
-    val args = arrayOf("aaa", 1)
+    val args = arrayOf<Any>("aaa", 1)
 
     val r1 = mh.invokeExact(args)
     if (r1 != "aaa") return "Fail 1: $r1"
diff --git a/compiler/testData/codegen/box/reflection/typeOf/intersectionType.kt b/compiler/testData/codegen/box/reflection/typeOf/intersectionType.kt
index 51be626..1f4f3ac 100644
--- a/compiler/testData/codegen/box/reflection/typeOf/intersectionType.kt
+++ b/compiler/testData/codegen/box/reflection/typeOf/intersectionType.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // WITH_REFLECT
 // KJS_WITH_FULL_RUNTIME
 
diff --git a/compiler/testData/codegen/box/reified/reifiedIntersectionType.kt b/compiler/testData/codegen/box/reified/reifiedIntersectionType.kt
index 4699e4c..91c34fd 100644
--- a/compiler/testData/codegen/box/reified/reifiedIntersectionType.kt
+++ b/compiler/testData/codegen/box/reified/reifiedIntersectionType.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // KJS_WITH_FULL_RUNTIME
 
 // KT-37163
diff --git a/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgument.kt b/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgument.kt
index 4ddb092..5359228 100644
--- a/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgument.kt
+++ b/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgument.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // WITH_STDLIB
 
 // See KT-37163
diff --git a/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgumentCrossModule.kt b/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgumentCrossModule.kt
index 5c84f5e..d13c67c 100644
--- a/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgumentCrossModule.kt
+++ b/compiler/testData/codegen/box/reified/reifiedIntersectionTypeArgumentCrossModule.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // WITH_STDLIB
 
 // See KT-37163
diff --git a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.diag.txt b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.diag.txt
index 9f9b2da..3d2cb80 100644
--- a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.diag.txt
+++ b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.diag.txt
@@ -1,3 +1,3 @@
-/kt49661.fir.kt:(272,273): warning: Type argument for reified type parameter 'T' was inferred to the intersection of ['Foo' & 'Int']. Reification of an intersection type results in the common supertype being used. This may lead to subtle issues and an explicit type argument is encouraged. This will become an error in a future release. See https://youtrack.jetbrains.com/issue/KT-71420.
+/kt49661.fir.kt:(273,274): error: Type argument for reified type parameter 'T' was inferred to the intersection of ['Foo' & 'Int']. Reification of an intersection type results in the common supertype being used. This may lead to subtle issues and an explicit type argument is encouraged.
 
-/kt49661.fir.kt:(272,273): warning: Type argument for type parameter 'T' cannot be inferred because it has incompatible upper bounds: Foo, Int (multiple incompatible classes). This will become an error in a future release. See https://youtrack.jetbrains.com/issue/KT-51221.
+/kt49661.fir.kt:(273,274): warning: Type argument for type parameter 'T' cannot be inferred because it has incompatible upper bounds: Foo, Int (multiple incompatible classes). This will become an error in a future release. See https://youtrack.jetbrains.com/issue/KT-51221.
diff --git a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.kt b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.kt
index f85b1d7..768f0f6 100644
--- a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.kt
+++ b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.fir.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // LANGUAGE: -ForbidInferringTypeVariablesIntoEmptyIntersection
 // RENDER_DIAGNOSTICS_FULL_TEXT
 open class Foo
@@ -9,7 +9,7 @@
 }
 
 fun main() {
-    f<Int> { <!INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING, TYPE_INTERSECTION_AS_REIFIED_WARNING!>g<!>() }
+    f<Int> { <!INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING, TYPE_INTERSECTION_AS_REIFIED_ERROR!>g<!>() }
 }
 
 /* GENERATED_FIR_TAGS: classDeclaration, functionDeclaration, functionalType, inline, intersectionType, lambdaLiteral,
diff --git a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.kt b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.kt
index a0b623f..6434599 100644
--- a/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.kt
+++ b/compiler/testData/diagnostics/tests/inference/emptyIntersectionTypes/kt49661.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // LANGUAGE: -ForbidInferringTypeVariablesIntoEmptyIntersection
 // RENDER_DIAGNOSTICS_FULL_TEXT
 open class Foo
diff --git a/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.fir.kt b/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.fir.kt
index f7dd863..02216f3 100644
--- a/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.fir.kt
+++ b/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.fir.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // ISSUE: KT-67912
 // WITH_STDLIB
 
@@ -8,7 +8,7 @@
 
 fun main() {
     val otherValue: Map<String, String> by lazy {
-        <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>foo<!>("") ?: emptyMap()
+        <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>foo<!>("") ?: emptyMap()
     }
 }
 
diff --git a/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.kt b/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.kt
index 67c2f65..e6b0d0a 100644
--- a/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.kt
+++ b/compiler/testData/diagnostics/tests/inference/genericWithUnmatchedNullabilityDelegate.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // ISSUE: KT-67912
 // WITH_STDLIB
 
diff --git a/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.fir.kt b/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.fir.kt
index 1a4ca5b..c9a9443 100644
--- a/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.fir.kt
+++ b/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.fir.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // ISSUE: KT-67912
 // WITH_STDLIB
 
@@ -8,7 +8,7 @@
 
 fun main() {
     val value: Map<String, String> = requireNotNull(
-        <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>foo<!>("")
+        <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>foo<!>("")
     )
 }
 
diff --git a/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.kt b/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.kt
index 2707cfa..88e3ff0 100644
--- a/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.kt
+++ b/compiler/testData/diagnostics/tests/inference/genericsWithUnmatchedNullabilityNested.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // ISSUE: KT-67912
 // WITH_STDLIB
 
diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt46186.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/kt46186.fir.kt
index 55f7f80..c9dfaab 100644
--- a/compiler/testData/diagnostics/tests/typeParameters/kt46186.fir.kt
+++ b/compiler/testData/diagnostics/tests/typeParameters/kt46186.fir.kt
@@ -20,25 +20,25 @@
 fun test3(): I = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
 inline fun <reified T: View2> findViewById4(): T = null as T
-fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
 fun <T: View3> findViewById5(): T = null as T
 fun test5(): I = findViewById5()
 
 inline fun <reified T: View3> findViewById6(): T = null as T
-fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
 fun <T: View4> findViewById7(): T = null as T
 fun test7(): I = findViewById7()
 
 inline fun <reified T: View4> findViewById8(): T = null as T
-fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
 fun <T> findViewById9(): T where T: View3, T: View5 = null as T
 fun test9(): I = findViewById9()
 
 inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
 fun <T: View2> findViewById11(): T = null as T
 fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
@@ -54,25 +54,25 @@
     fun test3(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
     inline fun <reified T: I> findViewById4(): T = null as T
-    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
     fun <T: I> findViewById5(): T = null as T
     fun test5(): View3 = findViewById5()
 
     inline fun <reified T: I> findViewById6(): T = null as T
-    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
     fun <T: I> findViewById7(): T = null as T
     fun test7(): View4 = findViewById7()
 
     inline fun <reified T: I> findViewById8(): T = null as T
-    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
     fun <T> findViewById9(): T where T: View3, T: View5 = null as T
     fun test9(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById9()<!>
 
     inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-    fun test10(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!><!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()<!>
+    fun test10(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!><!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()<!>
 
     fun <T: View2> findViewById11(): T = null as T
     fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt46186.partialBody.kt b/compiler/testData/diagnostics/tests/typeParameters/kt46186.partialBody.kt
index d83bf36..a72af99 100644
--- a/compiler/testData/diagnostics/tests/typeParameters/kt46186.partialBody.kt
+++ b/compiler/testData/diagnostics/tests/typeParameters/kt46186.partialBody.kt
@@ -20,25 +20,25 @@
 fun test3(): I = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
 inline fun <reified T: View2> findViewById4(): T = null as T
-fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
 fun <T: View3> findViewById5(): T = null as T
 fun test5(): I = findViewById5()
 
 inline fun <reified T: View3> findViewById6(): T = null as T
-fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
 fun <T: View4> findViewById7(): T = null as T
 fun test7(): I = findViewById7()
 
 inline fun <reified T: View4> findViewById8(): T = null as T
-fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
 fun <T> findViewById9(): T where T: View3, T: View5 = null as T
 fun test9(): I = findViewById9()
 
 inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
 fun <T: View2> findViewById11(): T = null as T
 fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
@@ -54,25 +54,25 @@
     fun test3(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
     inline fun <reified T: I> findViewById4(): T = null as T
-    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
     fun <T: I> findViewById5(): T = null as T
     fun test5(): View3 = findViewById5()
 
     inline fun <reified T: I> findViewById6(): T = null as T
-    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
     fun <T: I> findViewById7(): T = null as T
     fun test7(): View4 = findViewById7()
 
     inline fun <reified T: I> findViewById8(): T = null as T
-    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
     fun <T> findViewById9(): T where T: View3, T: View5 = null as T
     fun test9(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById9()<!>
 
     inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-    fun test10(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!><!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()<!>
+    fun test10(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!><!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()<!>
 
     fun <T: View2> findViewById11(): T = null as T
     fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt46186.reversed.kt b/compiler/testData/diagnostics/tests/typeParameters/kt46186.reversed.kt
index f7fd9bb..8bf8c16 100644
--- a/compiler/testData/diagnostics/tests/typeParameters/kt46186.reversed.kt
+++ b/compiler/testData/diagnostics/tests/typeParameters/kt46186.reversed.kt
@@ -20,25 +20,25 @@
 fun test3(): I = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
 inline fun <reified T: View2> findViewById4(): T = null as T
-fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
 fun <T: View3> findViewById5(): T = null as T
 fun test5(): I = findViewById5()
 
 inline fun <reified T: View3> findViewById6(): T = null as T
-fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
 fun <T: View4> findViewById7(): T = null as T
 fun test7(): I = findViewById7()
 
 inline fun <reified T: View4> findViewById8(): T = null as T
-fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
 fun <T> findViewById9(): T where T: View3, T: View5 = null as T
 fun test9(): I = findViewById9()
 
 inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
 fun <T: View2> findViewById11(): T = null as T
 fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
@@ -54,25 +54,25 @@
     fun test3(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById3()<!>
 
     inline fun <reified T: I> findViewById4(): T = null as T
-    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
     fun <T: I> findViewById5(): T = null as T
     fun test5(): View3 = findViewById5()
 
     inline fun <reified T: I> findViewById6(): T = null as T
-    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
     fun <T: I> findViewById7(): T = null as T
     fun test7(): View4 = findViewById7()
 
     inline fun <reified T: I> findViewById8(): T = null as T
-    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
     fun <T> findViewById9(): T where T: View3, T: View5 = null as T
     fun test9(): View1 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById9()<!>
 
     inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-    fun test10(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+    fun test10(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
     fun <T: View2> findViewById11(): T = null as T
     fun test11(): View4 = <!RETURN_TYPE_MISMATCH, TYPE_MISMATCH!>findViewById11()<!>
diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.fir.kt
index 3964c5f..971e58d 100644
--- a/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.fir.kt
+++ b/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.fir.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // DIAGNOSTICS: -FINAL_UPPER_BOUND -CAST_NEVER_SUCCEEDS
 // LANGUAGE: +AllowEmptyIntersectionsInResultTypeResolver
 // LANGUAGE: -ForbidInferringTypeVariablesIntoEmptyIntersection
@@ -18,28 +18,28 @@
 fun test2(): I = findViewById2()
 
 inline fun <reified T: View1> findViewById3(): T = null as T
-fun test3(): I = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById3<!>()
+fun test3(): I = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById3<!>()
 
 inline fun <reified T: View2> findViewById4(): T = null as T
-fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+fun test4(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
 fun <T: View3> findViewById5(): T = null as T
 fun test5(): I = findViewById5()
 
 inline fun <reified T: View3> findViewById6(): T = null as T
-fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+fun test6(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
 fun <T: View4> findViewById7(): T = null as T
 fun test7(): I = findViewById7()
 
 inline fun <reified T: View4> findViewById8(): T = null as T
-fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+fun test8(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
 fun <T> findViewById9(): T where T: View3, T: View5 = null as T
 fun test9(): I = findViewById9()
 
 inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+fun test10(): I = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
 fun <T: View2> findViewById11(): T = null as T
 fun test11(): View4 = <!INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING!>findViewById11<!>()
@@ -52,28 +52,28 @@
     fun test2(): View2 = findViewById2()
 
     inline fun <reified T: I> findViewById3(): T = null as T
-    fun test3(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById3<!>()
+    fun test3(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById3<!>()
 
     inline fun <reified T: I> findViewById4(): T = null as T
-    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById4<!>()
+    fun test4(): View2 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById4<!>()
 
     fun <T: I> findViewById5(): T = null as T
     fun test5(): View3 = findViewById5()
 
     inline fun <reified T: I> findViewById6(): T = null as T
-    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById6<!>()
+    fun test6(): View3 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById6<!>()
 
     fun <T: I> findViewById7(): T = null as T
     fun test7(): View4 = findViewById7()
 
     inline fun <reified T: I> findViewById8(): T = null as T
-    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById8<!>()
+    fun test8(): View4 = <!TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById8<!>()
 
     fun <T> findViewById9(): T where T: View3, T: View5 = null as T
     fun test9(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION!>findViewById9<!>()
 
     inline fun <reified T> findViewById10(): T where T: View3, T: View5 = null as T
-    fun test10(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_WARNING!>findViewById10<!>()
+    fun test10(): View1 = <!INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION, TYPE_INTERSECTION_AS_REIFIED_ERROR!>findViewById10<!>()
 
     fun <T: View2> findViewById11(): T = null as T
     fun test11(): View4 = <!INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_WARNING!>findViewById11<!>()
diff --git a/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.kt b/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.kt
index dc7dec4..972cfe3 100644
--- a/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.kt
+++ b/compiler/testData/diagnostics/tests/typeParameters/kt46186withEmptyIntersections.kt
@@ -1,4 +1,4 @@
-// RUN_PIPELINE_TILL: BACKEND
+// RUN_PIPELINE_TILL: FRONTEND
 // DIAGNOSTICS: -FINAL_UPPER_BOUND -CAST_NEVER_SUCCEEDS
 // LANGUAGE: +AllowEmptyIntersectionsInResultTypeResolver
 // LANGUAGE: -ForbidInferringTypeVariablesIntoEmptyIntersection
diff --git a/compiler/testData/ir/irText/types/definitelyNotNullWithIntersection1.kt b/compiler/testData/ir/irText/types/definitelyNotNullWithIntersection1.kt
index 5870856..2c7bfef 100644
--- a/compiler/testData/ir/irText/types/definitelyNotNullWithIntersection1.kt
+++ b/compiler/testData/ir/irText/types/definitelyNotNullWithIntersection1.kt
@@ -1,4 +1,4 @@
-// LANGUAGE: +DefinitelyNonNullableTypes
+// LANGUAGE: +DefinitelyNonNullableTypes -ProhibitIntersectionReifiedTypeParameter
 // SKIP_KT_DUMP
 // FIR_IDENTICAL
 
diff --git a/compiler/testData/ir/irText/types/intersectionType1.kt b/compiler/testData/ir/irText/types/intersectionType1.kt
index b3655d2..fb422b2 100644
--- a/compiler/testData/ir/irText/types/intersectionType1.kt
+++ b/compiler/testData/ir/irText/types/intersectionType1.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // FIR_IDENTICAL
 class In<in I>
 
diff --git a/compiler/testData/ir/irText/types/intersectionType2.kt b/compiler/testData/ir/irText/types/intersectionType2.kt
index dcfd27b..3998404 100644
--- a/compiler/testData/ir/irText/types/intersectionType2.kt
+++ b/compiler/testData/ir/irText/types/intersectionType2.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // FIR_IDENTICAL
 interface A<out T>
 interface Foo
diff --git a/compiler/testData/ir/irText/types/intersectionType3.kt b/compiler/testData/ir/irText/types/intersectionType3.kt
index 18cb50f..fd232ee 100644
--- a/compiler/testData/ir/irText/types/intersectionType3.kt
+++ b/compiler/testData/ir/irText/types/intersectionType3.kt
@@ -1,3 +1,4 @@
+// LANGUAGE: -ProhibitIntersectionReifiedTypeParameter
 // FIR_IDENTICAL
 
 interface In<in T>