diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
index 4a0efff..578e241 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
@@ -34172,6 +34172,22 @@
         }
 
         @Nested
+        @TestMetadata("compiler/testData/diagnostics/tests/varrays")
+        @TestDataPath("$PROJECT_ROOT")
+        public class Varrays {
+            @Test
+            public void testAllFilesPresentInVarrays() throws Exception {
+                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/varrays"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
+            }
+
+            @Test
+            @TestMetadata("vArraysTypeChecks.kt")
+            public void testVArraysTypeChecks() throws Exception {
+                runTest("compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt");
+            }
+        }
+
+        @Nested
         @TestMetadata("compiler/testData/diagnostics/tests/visibility")
         @TestDataPath("$PROJECT_ROOT")
         public class Visibility {
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
index 1e78a8f..aeeff7d 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
@@ -34268,6 +34268,22 @@
         }
 
         @Nested
+        @TestMetadata("compiler/testData/diagnostics/tests/varrays")
+        @TestDataPath("$PROJECT_ROOT")
+        public class Varrays {
+            @Test
+            public void testAllFilesPresentInVarrays() throws Exception {
+                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/varrays"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
+            }
+
+            @Test
+            @TestMetadata("vArraysTypeChecks.kt")
+            public void testVArraysTypeChecks() throws Exception {
+                runTest("compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt");
+            }
+        }
+
+        @Nested
         @TestMetadata("compiler/testData/diagnostics/tests/visibility")
         @TestDataPath("$PROJECT_ROOT")
         public class Visibility {
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
index 8e4a1bc..aac2b61 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
@@ -34172,6 +34172,22 @@
         }
 
         @Nested
+        @TestMetadata("compiler/testData/diagnostics/tests/varrays")
+        @TestDataPath("$PROJECT_ROOT")
+        public class Varrays {
+            @Test
+            public void testAllFilesPresentInVarrays() throws Exception {
+                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/varrays"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
+            }
+
+            @Test
+            @TestMetadata("vArraysTypeChecks.kt")
+            public void testVArraysTypeChecks() throws Exception {
+                runTest("compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt");
+            }
+        }
+
+        @Nested
         @TestMetadata("compiler/testData/diagnostics/tests/visibility")
         @TestDataPath("$PROJECT_ROOT")
         public class Visibility {
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirCastDiagnosticsHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirCastDiagnosticsHelpers.kt
index 6231a87..7780579 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirCastDiagnosticsHelpers.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirCastDiagnosticsHelpers.kt
@@ -114,7 +114,6 @@
 }
 
 fun isCastErased(supertype: ConeKotlinType, subtype: ConeKotlinType, context: CheckerContext): Boolean {
-    if ((subtype as? ConeClassLikeType)?.toSymbol(context.session)?.name == Name.identifier("VArray")) return false
     val typeContext = context.session.typeContext
 
     val isNonReifiedTypeParameter = subtype.isNonReifiedTypeParameter()
@@ -148,6 +147,13 @@
     // NOTE: this does not account for 'as Array<List<T>>'
     if (subtype.allParameterReified()) return false
 
+    if (subtype.isVArray) {
+        val argument = subtype.typeArguments.singleOrNull() ?: return false
+        if (argument.kind == ProjectionKind.INVARIANT && (argument.type?.isPrimitive == true) || (argument.type?.isUnsignedType == true)) {
+            return false
+        }
+    }
+
     val staticallyKnownSubtype = findStaticallyKnownSubtype(supertype, subtype, context)
 
     // If the substitution failed, it means that the result is an impossible type, e.g. something like Out<in Foo>
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirVArrayTypeArgumentReifiedChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirVArrayTypeArgumentReifiedChecker.kt
index 23fce07..4a496c0 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirVArrayTypeArgumentReifiedChecker.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirVArrayTypeArgumentReifiedChecker.kt
@@ -6,9 +6,11 @@
 package org.jetbrains.kotlin.fir.analysis.checkers.type
 
 import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
+import org.jetbrains.kotlin.diagnostics.reportOn
 import org.jetbrains.kotlin.fir.analysis.checkers.checkIfSuitableForReifiedTypeParameterAndReport
 import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
 import org.jetbrains.kotlin.fir.analysis.checkers.extractArgumentsTypeRefAndSource
+import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
 import org.jetbrains.kotlin.fir.types.*
 
 object FirVArrayTypeArgumentReifiedChecker : FirTypeRefChecker() {
@@ -17,6 +19,10 @@
         val type = (typeRef as? FirResolvedTypeRef)?.type ?: return
         val typeArgument = type.typeArguments.singleOrNull() ?: return
         val typeArgumentSource = extractArgumentsTypeRefAndSource(typeRef)?.singleOrNull()?.source ?: return
+        if (typeArgument.isStarProjection) {
+            reporter.reportOn(typeArgumentSource, FirErrors.ILLEGAL_PROJECTION_USAGE, context)
+            return
+        }
         checkIfSuitableForReifiedTypeParameterAndReport(typeArgument.type, typeArgumentSource, context, reporter)
     }
 }
\ No newline at end of file
diff --git a/compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt b/compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt
new file mode 100644
index 0000000..6fd5a29
--- /dev/null
+++ b/compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt
@@ -0,0 +1,54 @@
+// FIR_IDENTICAL
+// WITH_STDLIB
+
+@JvmInline
+value class IcInt(val x: Int)
+
+@JvmInline
+value class IcIntN(val x: Int?)
+
+@JvmInline
+value class IcStr(val x: String)
+
+@JvmInline
+value class IcByteGeneric<T>(val x: Byte)
+
+// OK checks:
+
+fun checkBool(p: Any) = p is VArray<Boolean>
+fun checkByte(p: Any) = p is VArray<Byte>
+fun checkShort(p: Any) = p is VArray<Short>
+fun checkInt(p: Any) = p is VArray<Int>
+fun checkLong(p: Any) = p is VArray<Long>
+fun checkFloat(p: Any) = p is VArray<Float>
+fun checkDouble(p: Any) = p is VArray<Double>
+fun checkChar(p: Any) = p is VArray<Char>
+
+fun checkUByte(p: Any?) = p is VArray<UByte>
+fun checkUShort(p: Any?) = p is VArray<UShort>
+fun checkUInt(p: Any?) = p is VArray<UInt>
+fun checkULong(p: Any?) = p is VArray<ULong>
+
+
+// Forbidden checks:
+
+fun checkNoArg(p: Any?) = p is <!NO_TYPE_ARGUMENTS_ON_RHS!>VArray<!>
+fun checkTwoArg(p: Any?) = p is VArray<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int, Int><!>
+
+fun checkIcInt(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<IcInt><!>
+
+fun checkUByteN(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<UByte?><!>
+fun checkUShortN(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<UShort?><!>
+fun checkUIntN(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<UInt?><!>
+fun checkULongN(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<ULong?><!>
+
+fun checkIcIntN(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<IcIntN><!>
+fun checkStr(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<String><!>
+fun checkIcStr(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<IcStr><!>
+fun checkIcByteGenericStar(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<IcByteGeneric<*>><!>
+fun checkIcByteGenericInt(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<IcByteGeneric<Int>><!>
+fun check2DVArray(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<VArray<Int>><!>
+fun checkIntIn(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<VArray<in Int>><!>
+fun checkIntOut(p: Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<VArray<out Int>><!>
+fun checkStar(p: Any?) = p is VArray<<!ILLEGAL_PROJECTION_USAGE!>*<!>>
+fun <T> checkT(p:Any?) = p is <!CANNOT_CHECK_FOR_ERASED!>VArray<<!TYPE_PARAMETER_AS_REIFIED!>T<!>><!>
\ No newline at end of file
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
index f777087..87246f8 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
@@ -34268,6 +34268,22 @@
         }
 
         @Nested
+        @TestMetadata("compiler/testData/diagnostics/tests/varrays")
+        @TestDataPath("$PROJECT_ROOT")
+        public class Varrays {
+            @Test
+            public void testAllFilesPresentInVarrays() throws Exception {
+                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/varrays"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
+            }
+
+            @Test
+            @TestMetadata("vArraysTypeChecks.kt")
+            public void testVArraysTypeChecks() throws Exception {
+                runTest("compiler/testData/diagnostics/tests/varrays/vArraysTypeChecks.kt");
+            }
+        }
+
+        @Nested
         @TestMetadata("compiler/testData/diagnostics/tests/visibility")
         @TestDataPath("$PROJECT_ROOT")
         public class Visibility {
