some progress
diff --git a/compiler/testData/codegen/box/arrays/vArrays/vArrayTypeChecks.kt b/compiler/testData/codegen/box/arrays/vArrays/vArrayTypeChecks.kt index e58328c..1b52456 100644 --- a/compiler/testData/codegen/box/arrays/vArrays/vArrayTypeChecks.kt +++ b/compiler/testData/codegen/box/arrays/vArrays/vArrayTypeChecks.kt
@@ -63,7 +63,7 @@ VArrayType.U_LONG to ::isULongVArray ) -fun check(obj: Any?, expectedType: VArrayType): Boolean { +fun isTypeExpected(obj: Any?, expectedType: VArrayType): Boolean { typeToСheckingFunc.forEach { (type, checkingFunc) -> if (type == expectedType && !checkingFunc(obj)) return false if (type != expectedType && checkingFunc(obj)) return false @@ -71,6 +71,8 @@ return true } +fun isNoneOfTypes(obj: Any?) = typeToСheckingFunc.none { (type, checkingFunc) -> checkingFunc(obj) } + @JvmInline value class IcInt(val x: Int) @@ -106,27 +108,35 @@ val uIntVArray = VArray<UInt>(1) { 0.toUInt() } val uLongVArray = VArray<ULong>(1) { 0.toULong() } + val arrayOfInt = Array<Int>(1) { 0 } + val arrayOfStr = Array<String>(1) { "a" } + val arrayOfIcInt = Array<IcInt>(1) { IcInt(0) } - if (!check(boolVArray, VArrayType.BOOL)) return "Fail 1" - if (!check(byteVArray, VArrayType.BYTE)) return "Fail 2" - if (!check(shortVArray, VArrayType.SHORT)) return "Fail 3" - if (!check(intVArray, VArrayType.INT)) return "Fail 4" - if (!check(longVArray, VArrayType.LONG)) return "Fail 5" - if (!check(floatVArray, VArrayType.FLOAT)) return "Fail 6" - if (!check(doubleVArray, VArrayType.DOUBLE)) return "Fail 7" - if (!check(charVArray, VArrayType.CHAR)) return "Fail 8" - if (!check(icIntVArray, VArrayType.IcInt)) return "Fail 9" - if (!check(strVArray, VArrayType.STRING)) return "Fail 10" - if (!check(icIcIntVArray, VArrayType.IcIcInt)) return "Fail 11" - if (!check(icStrVArray, VArrayType.IcStr)) return "Fail 12" - if (!check(double3dVArray, VArrayType.DOUBLE_3D)) return "Fail 13" - if (!check(str2dVArray, VArrayType.STR_2D)) return "Fail 14" + if (!isTypeExpected(boolVArray, VArrayType.BOOL)) return "Fail 1" + if (!isTypeExpected(byteVArray, VArrayType.BYTE)) return "Fail 2" + if (!isTypeExpected(shortVArray, VArrayType.SHORT)) return "Fail 3" + if (!isTypeExpected(intVArray, VArrayType.INT)) return "Fail 4" + if (!isTypeExpected(longVArray, VArrayType.LONG)) return "Fail 5" + if (!isTypeExpected(floatVArray, VArrayType.FLOAT)) return "Fail 6" + if (!isTypeExpected(doubleVArray, VArrayType.DOUBLE)) return "Fail 7" + if (!isTypeExpected(charVArray, VArrayType.CHAR)) return "Fail 8" - if (!check(uByteVArray, VArrayType.U_BYTE)) return "Fail 15" - if (!check(uShortVArray, VArrayType.U_SHORT)) return "Fail 16" - if (!check(uIntVArray, VArrayType.U_INT)) return "Fail 17" - if (!check(uLongVArray, VArrayType.U_LONG)) return "Fail 18" + if (!isTypeExpected(icIntVArray, VArrayType.IcInt)) return "Fail 9" + if (!isTypeExpected(strVArray, VArrayType.STRING)) return "Fail 10" + if (!isTypeExpected(icIcIntVArray, VArrayType.IcIcInt)) return "Fail 11" + if (!isTypeExpected(icStrVArray, VArrayType.IcStr)) return "Fail 12" + if (!isTypeExpected(double3dVArray, VArrayType.DOUBLE_3D)) return "Fail 13" + if (!isTypeExpected(str2dVArray, VArrayType.STR_2D)) return "Fail 14" + + if (!isTypeExpected(uByteVArray, VArrayType.U_BYTE)) return "Fail 15" + if (!isTypeExpected(uShortVArray, VArrayType.U_SHORT)) return "Fail 16" + if (!isTypeExpected(uIntVArray, VArrayType.U_INT)) return "Fail 17" + if (!isTypeExpected(uLongVArray, VArrayType.U_LONG)) return "Fail 18" + + if (!isNoneOfTypes(arrayOfInt)) return "Fail 19" + if (!isNoneOfTypes(arrayOfStr)) return "Fail 20" + if (!isNoneOfTypes(arrayOfIcInt)) return "Fail 21" return "OK" }