Add new tests to check evaluation of intrinsic сonsts

This commit is contained in:
Ivan Kylchik
2021-12-15 18:33:36 +03:00
parent dca22d745a
commit 20d0a531df
21 changed files with 1551 additions and 41 deletions
@@ -20057,6 +20057,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/modifiers/const/constInteraction.kt");
}
@Test
@TestMetadata("enumConstName.kt")
public void testEnumConstName() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/enumConstName.kt");
}
@Test
@TestMetadata("fromJava.kt")
public void testFromJava() throws Exception {
@@ -20069,6 +20075,18 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/modifiers/const/fromJavaSubclass.kt");
}
@Test
@TestMetadata("ifConstVal.kt")
public void testIfConstVal() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/ifConstVal.kt");
}
@Test
@TestMetadata("kCallable.kt")
public void testKCallable() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/kCallable.kt");
}
@Test
@TestMetadata("kt12248.kt")
public void testKt12248() throws Exception {
@@ -20081,11 +20099,23 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
runTest("compiler/testData/diagnostics/tests/modifiers/const/kt15913.kt");
}
@Test
@TestMetadata("stdlibConstFun.kt")
public void testStdlibConstFun() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/stdlibConstFun.kt");
}
@Test
@TestMetadata("types.kt")
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
}
@Test
@TestMetadata("unsigned.kt")
public void testUnsigned() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/unsigned.kt");
}
}
@Nested
@@ -20110,6 +20110,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
}
@Test
@TestMetadata("unsigned.kt")
public void testUnsigned() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/unsigned.kt");
}
}
@Nested
@@ -20110,6 +20110,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
}
@Test
@TestMetadata("unsigned.kt")
public void testUnsigned() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/unsigned.kt");
}
}
@Nested
@@ -34,6 +34,24 @@ public class LoweredIrInterpreterTestGenerated extends AbstractLoweredIrInterpre
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/loweredIr/interpreter"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("booleanOperations.kt")
public void testBooleanOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/booleanOperations.kt");
}
@Test
@TestMetadata("byteOperations.kt")
public void testByteOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/byteOperations.kt");
}
@Test
@TestMetadata("charOperations.kt")
public void testCharOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/charOperations.kt");
}
@Test
@TestMetadata("constTrimIndent.kt")
public void testConstTrimIndent() throws Exception {
@@ -46,18 +64,36 @@ public class LoweredIrInterpreterTestGenerated extends AbstractLoweredIrInterpre
runTest("compiler/testData/ir/loweredIr/interpreter/constTrimMargin.kt");
}
@Test
@TestMetadata("doubleOperations.kt")
public void testDoubleOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/doubleOperations.kt");
}
@Test
@TestMetadata("enumName.kt")
public void testEnumName() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/enumName.kt");
}
@Test
@TestMetadata("floatOperations.kt")
public void testFloatOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/floatOperations.kt");
}
@Test
@TestMetadata("ifConstVal.kt")
public void testIfConstVal() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/ifConstVal.kt");
}
@Test
@TestMetadata("intOperations.kt")
public void testIntOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/intOperations.kt");
}
@Test
@TestMetadata("kCallableName.kt")
public void testKCallableName() throws Exception {
@@ -65,9 +101,15 @@ public class LoweredIrInterpreterTestGenerated extends AbstractLoweredIrInterpre
}
@Test
@TestMetadata("primitiveOperations.kt")
public void testPrimitiveOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/primitiveOperations.kt");
@TestMetadata("longOperations.kt")
public void testLongOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/longOperations.kt");
}
@Test
@TestMetadata("shortOperations.kt")
public void testShortOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/shortOperations.kt");
}
@Test
@@ -75,5 +117,17 @@ public class LoweredIrInterpreterTestGenerated extends AbstractLoweredIrInterpre
public void testStdlibConst() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/stdlibConst.kt");
}
@Test
@TestMetadata("stringOperations.kt")
public void testStringOperations() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/stringOperations.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/unsignedConst.kt");
}
}
}
@@ -0,0 +1,85 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.backend.common.BackendContext
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
import org.jetbrains.kotlin.ir.util.isSubclassOf
import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name
val kCallableNamePropertyPhase = makeIrFilePhase(
::KCallableNamePropertyLowering,
name = "KCallableNameProperty",
description = "Replace name references for callables with constants"
)
private class KCallableNamePropertyLowering(val context: BackendContext) : FileLoweringPass {
override fun lower(irFile: IrFile) {
irFile.transformChildrenVoid(KCallableNamePropertyTransformer(this))
}
}
private class KCallableNamePropertyTransformer(val lower: KCallableNamePropertyLowering) : IrElementTransformerVoid() {
private fun nameForCallableMember(reference: IrCallableReference<*>): Name {
return when (reference) {
is IrFunctionReference -> reference.symbol.owner.name
is IrPropertyReference -> reference.symbol.owner.name
is IrLocalDelegatedPropertyReference -> reference.symbol.owner.name
else -> error("Unexpected callable reference type ${reference.render()}")
}
}
override fun visitCall(expression: IrCall): IrExpression {
val callableReference = expression.dispatchReceiver as? IrCallableReference<*>
?: return super.visitCall(expression)
val directMember = expression.symbol.owner.let {
(it as? IrSimpleFunction)?.correspondingPropertySymbol?.owner ?: it
}
val irClass = directMember.parent as? IrClass
?: return super.visitCall(expression)
if (!irClass.isSubclassOf(lower.context.irBuiltIns.kCallableClass.owner)) {
return super.visitCall(expression)
}
val name = when (directMember) {
is IrSimpleFunction -> directMember.name
is IrProperty -> directMember.name
else -> throw AssertionError("Should be IrSimpleFunction or IrProperty, got $directMember")
}
if (name.asString() != "name") return expression
val receiver = callableReference.dispatchReceiver ?: callableReference.extensionReceiver
return IrCompositeImpl(expression.startOffset, expression.endOffset, lower.context.irBuiltIns.stringType).apply {
receiver?.let {
//put receiver for bound callable reference
statements.add(it)
}
statements.add(
IrConstImpl.string(
expression.startOffset,
expression.endOffset,
lower.context.irBuiltIns.stringType,
nameForCallableMember(callableReference).asString()
)
)
}
}
}
@@ -278,6 +278,7 @@ private val jvmFilePhases = listOf(
mainMethodGenerationPhase,
inventNamesForLocalClassesPhase,
kCallableNamePropertyPhase,
annotationPhase,
annotationImplementationPhase,
polymorphicSignaturePhase,
@@ -7,7 +7,7 @@ class A {
val b = A::b.name
val c = ::A.name
// val d = this::a.name // Not supported
// val e = A()::b.name // Not supported
val d = this::a.name
val e = A()::b.name
}
}
@@ -0,0 +1,72 @@
// FIR_IDENTICAL
// WITH_STDLIB
const val byteVal: UByte = 1u
const val shortVal: UShort = 2u
const val intVal: UInt = 3u
const val longVal: ULong = 4uL
const val compareTo1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.compareTo(byteVal)<!>
const val compareTo2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.compareTo(shortVal)<!>
const val compareTo3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.compareTo(intVal)<!>
const val compareTo4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.compareTo(longVal)<!>
const val plus1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.plus(byteVal)<!>
const val plus2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.plus(shortVal)<!>
const val plus3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.plus(intVal)<!>
const val plus4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.plus(longVal)<!>
const val minus1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.minus(byteVal)<!>
const val minus2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.minus(shortVal)<!>
const val minus3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.minus(intVal)<!>
const val minus4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.minus(longVal)<!>
const val times1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.times(byteVal)<!>
const val times2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.times(shortVal)<!>
const val times3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.times(intVal)<!>
const val times4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.times(longVal)<!>
const val div1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.div(byteVal)<!>
const val div2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.div(shortVal)<!>
const val div3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.div(intVal)<!>
const val div4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.div(longVal)<!>
const val rem1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.rem(byteVal)<!>
const val rem2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.rem(shortVal)<!>
const val rem3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.rem(intVal)<!>
const val rem4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.rem(longVal)<!>
const val floorDiv1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.floorDiv(byteVal)<!>
const val floorDiv2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.floorDiv(shortVal)<!>
const val floorDiv3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.floorDiv(intVal)<!>
const val floorDiv4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.floorDiv(longVal)<!>
const val mod1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.mod(byteVal)<!>
const val mod2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.mod(shortVal)<!>
const val mod3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.mod(intVal)<!>
const val mod4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.mod(longVal)<!>
const val and = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.and(byteVal)<!>
const val or = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.or(byteVal)<!>
const val xor = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.xor(byteVal)<!>
const val inv = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.inv()<!>
const val convert1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toByte()<!>
const val convert2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toShort()<!>
const val convert3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toInt()<!>
const val convert4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toLong()<!>
const val convert5 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toFloat()<!>
const val convert6 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toDouble()<!>
const val convert7 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toUByte()<!>
const val convert8 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toUShort()<!>
const val convert9 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toUInt()<!>
const val convert10 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toULong()<!>
const val toString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.toString()<!>
const val toString2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>shortVal.toString()<!>
const val toString3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>intVal.toString()<!>
const val toString4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>longVal.toString()<!>
const val equals1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.equals(byteVal)<!>
const val equals2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.equals(shortVal)<!>
const val equals3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.equals(intVal)<!>
const val equals4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>byteVal.equals(longVal)<!>
@@ -0,0 +1,61 @@
package
public const val and: kotlin.UByte
public const val byteVal: kotlin.UByte = 1.toUByte()
public const val compareTo1: kotlin.Int
public const val compareTo2: kotlin.Int
public const val compareTo3: kotlin.Int
public const val compareTo4: kotlin.Int
public const val convert1: kotlin.Byte
public const val convert10: kotlin.ULong
public const val convert2: kotlin.Short
public const val convert3: kotlin.Int
public const val convert4: kotlin.Long
public const val convert5: kotlin.Float
public const val convert6: kotlin.Double
public const val convert7: kotlin.UByte
public const val convert8: kotlin.UShort
public const val convert9: kotlin.UInt
public const val div1: kotlin.UInt
public const val div2: kotlin.UInt
public const val div3: kotlin.UInt
public const val div4: kotlin.ULong
public const val equals1: kotlin.Boolean
public const val equals2: kotlin.Boolean
public const val equals3: kotlin.Boolean
public const val equals4: kotlin.Boolean
public const val floorDiv1: kotlin.UInt
public const val floorDiv2: kotlin.UInt
public const val floorDiv3: kotlin.UInt
public const val floorDiv4: kotlin.ULong
public const val intVal: kotlin.UInt = 3.toUInt()
public const val inv: kotlin.UByte
public const val longVal: kotlin.ULong = 4.toULong()
public const val minus1: kotlin.UInt
public const val minus2: kotlin.UInt
public const val minus3: kotlin.UInt
public const val minus4: kotlin.ULong
public const val mod1: kotlin.UByte
public const val mod2: kotlin.UShort
public const val mod3: kotlin.UInt
public const val mod4: kotlin.ULong
public const val or: kotlin.UByte
public const val plus1: kotlin.UInt
public const val plus2: kotlin.UInt
public const val plus3: kotlin.UInt
public const val plus4: kotlin.ULong
public const val rem1: kotlin.UInt
public const val rem2: kotlin.UInt
public const val rem3: kotlin.UInt
public const val rem4: kotlin.ULong
public const val shortVal: kotlin.UShort = 2.toUShort()
public const val times1: kotlin.UInt
public const val times2: kotlin.UInt
public const val times3: kotlin.UInt
public const val times4: kotlin.ULong
public const val toString1: kotlin.String
public const val toString2: kotlin.String
public const val toString3: kotlin.String
public const val toString4: kotlin.String
public const val xor: kotlin.UByte
@@ -0,0 +1,69 @@
const val trueVal = true
const val falseVal = false
const val not1 = trueVal.not()
const val not2 = falseVal.not()
const val and1 = trueVal.and(trueVal)
const val and2 = trueVal.and(falseVal)
const val and3 = falseVal.and(trueVal)
const val and4 = falseVal.and(falseVal)
const val or1 = trueVal.or(trueVal)
const val or2 = trueVal.or(falseVal)
const val or3 = falseVal.or(trueVal)
const val or4 = falseVal.or(falseVal)
const val xor1 = trueVal.xor(trueVal)
const val xor2 = trueVal.xor(falseVal)
const val xor3 = falseVal.xor(trueVal)
const val xor4 = falseVal.xor(falseVal)
const val compareTo1 = trueVal.compareTo(trueVal)
const val compareTo2 = trueVal.compareTo(falseVal)
const val compareTo3 = falseVal.compareTo(trueVal)
const val compareTo4 = falseVal.compareTo(falseVal)
const val equals1 = trueVal.equals(trueVal)
const val equals2 = trueVal.equals(falseVal)
const val equals3 = falseVal.equals(trueVal)
const val equals4 = falseVal.equals(falseVal)
const val equals5 = falseVal.equals(1)
const val toString1 = trueVal.toString()
const val toString2 = falseVal.toString()
fun box(): String {
if (not1 != false) return "Fail 1.1"
if (not2 != true) return "Fail 1.2"
if (and1 != true) return "Fail 2.1"
if (and2 != false) return "Fail 2.2"
if (and3 != false) return "Fail 2.3"
if (and4 != false) return "Fail 2.4"
if (or1 != true) return "Fail 3.1"
if (or2 != true) return "Fail 3.2"
if (or3 != true) return "Fail 3.3"
if (or4 != false) return "Fail 3.4"
if (xor1 != false) return "Fail 4.1"
if (xor2 != true) return "Fail 4.2"
if (xor3 != true) return "Fail 4.3"
if (xor4 != false) return "Fail 4.4"
if (compareTo1 != 0) return "Fail 5.1"
if (compareTo2 != 1) return "Fail 5.2"
if (compareTo3 != -1) return "Fail 5.3"
if (compareTo4 != 0) return "Fail 5.4"
if (equals1 != true) return "Fail 6.1"
if (equals2 != false) return "Fail 6.2"
if (equals3 != false) return "Fail 6.3"
if (equals4 != true) return "Fail 6.4"
if (equals5 != false) return "Fail 6.5"
if (toString1 != "true") return "Fail 7.1"
if (toString2 != "false") return "Fail 7.2"
return "OK"
}
@@ -0,0 +1,168 @@
const val minusOneVal = (-1).toByte()
const val oneVal = 1.toByte()
const val twoVal = 2.toByte()
const val threeVal = 3.toByte()
const val fourVal = 4.toByte()
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(shortVal)
const val compareTo5 = twoVal.compareTo(intVal)
const val compareTo6 = twoVal.compareTo(longVal)
const val compareTo7 = twoVal.compareTo(floatVal)
const val compareTo8 = twoVal.compareTo(doubleVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(shortVal)
const val plus5 = twoVal.plus(intVal)
const val plus6 = twoVal.plus(longVal)
const val plus7 = twoVal.plus(floatVal)
const val plus8 = twoVal.plus(doubleVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(shortVal)
const val minus5 = twoVal.minus(intVal)
const val minus6 = twoVal.minus(longVal)
const val minus7 = twoVal.minus(floatVal)
const val minus8 = twoVal.minus(doubleVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(shortVal)
const val times5 = twoVal.times(intVal)
const val times6 = twoVal.times(longVal)
const val times7 = twoVal.times(floatVal)
const val times8 = twoVal.times(doubleVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(shortVal)
const val div5 = twoVal.div(intVal)
const val div6 = twoVal.div(longVal)
const val div7 = twoVal.div(floatVal)
const val div8 = twoVal.div(doubleVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(shortVal)
const val rem5 = twoVal.rem(intVal)
const val rem6 = twoVal.rem(longVal)
const val rem7 = twoVal.rem(floatVal)
const val rem8 = twoVal.rem(doubleVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toByte()
const val convert2 = oneVal.toChar()
const val convert3 = oneVal.toShort()
const val convert4 = oneVal.toInt()
const val convert5 = oneVal.toLong()
const val convert6 = oneVal.toFloat()
const val convert7 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0) return "Fail 5.1"
if (div2 != 1) return "Fail 5.2"
if (div3 != 1) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != 1) return "Fail 8.1"
if (convert2 != '') return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1) return "Fail 8.4"
if (convert5 != 1) return "Fail 8.5"
if (convert6 != 1.0f) return "Fail 8.6"
if (convert7 != 1.0) return "Fail 8.7"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1") return "Fail 10.1"
if (toString2 != "2") return "Fail 10.2"
return "OK"
}
@@ -0,0 +1,94 @@
// WITH_STDLIB
const val oneVal = '1'
const val twoVal = '2'
const val threeVal = '3'
const val fourVal = '4'
const val intVal = 5
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = fourVal.compareTo(twoVal)
const val plus1 = oneVal.plus(intVal)
const val plus2 = twoVal.plus(intVal)
const val plus3 = threeVal.plus(intVal)
const val plus4 = fourVal.plus(intVal)
const val minusChar1 = oneVal.minus(twoVal)
const val minusChar2 = twoVal.minus(twoVal)
const val minusChar3 = threeVal.minus(twoVal)
const val minusChar4 = fourVal.minus(twoVal)
const val minusInt1 = oneVal.minus(intVal)
const val minusInt2 = twoVal.minus(intVal)
const val minusInt3 = threeVal.minus(intVal)
const val minusInt4 = fourVal.minus(intVal)
const val convert1 = oneVal.toByte()
const val convert2 = oneVal.toChar()
const val convert3 = oneVal.toShort()
const val convert4 = oneVal.toInt()
const val convert5 = oneVal.toLong()
const val convert6 = oneVal.toFloat()
const val convert7 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals(1)
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
const val code1 = oneVal.code
const val code2 = twoVal.code
const val code3 = threeVal.code
const val code4 = fourVal.code
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 1) return "Fail 1.4"
if (plus1 != '6') return "Fail 2.1"
if (plus2 != '7') return "Fail 2.2"
if (plus3 != '8') return "Fail 2.3"
if (plus4 != '9') return "Fail 2.4"
if (minusChar1 != -1) return "Fail 3.1"
if (minusChar2 != 0) return "Fail 3.2"
if (minusChar3 != 1) return "Fail 3.3"
if (minusChar4 != 2) return "Fail 3.4"
if (minusInt1 != ',') return "Fail 4.1"
if (minusInt2 != '-') return "Fail 4.2"
if (minusInt3 != '.') return "Fail 4.3"
if (minusInt4 != '/') return "Fail 4.4"
if (convert1 != 49.toByte()) return "Fail 5.1"
if (convert2 != '1') return "Fail 5.2"
if (convert3 != 49.toShort()) return "Fail 5.3"
if (convert4 != 49) return "Fail 5.4"
if (convert5 != 49L) return "Fail 5.5"
if (convert6 != 49.0f) return "Fail 5.6"
if (convert7 != 49.0) return "Fail 5.7"
if (equals1 != false) return "Fail 6.1"
if (equals2 != true) return "Fail 6.2"
if (equals3 != false) return "Fail 6.3"
if (equals4 != false) return "Fail 6.4"
if (equals5 != false) return "Fail 6.5"
if (toString1 != "1") return "Fail 7.1"
if (toString2 != "2") return "Fail 7.2"
if (code1 != 49) return "Fail 8.1"
if (code2 != 50) return "Fail 8.2"
if (code3 != 51) return "Fail 8.3"
if (code4 != 52) return "Fail 8.4"
return "OK"
}
@@ -0,0 +1,164 @@
const val minusOneVal = -1.0
const val oneVal = 1.0
const val twoVal = 2.0
const val threeVal = 3.0
const val fourVal = 4.0
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(byteVal)
const val compareTo5 = twoVal.compareTo(shortVal)
const val compareTo6 = twoVal.compareTo(intVal)
const val compareTo7 = twoVal.compareTo(longVal)
const val compareTo8 = twoVal.compareTo(floatVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(byteVal)
const val plus5 = twoVal.plus(shortVal)
const val plus6 = twoVal.plus(intVal)
const val plus7 = twoVal.plus(longVal)
const val plus8 = twoVal.plus(floatVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(byteVal)
const val minus5 = twoVal.minus(shortVal)
const val minus6 = twoVal.minus(intVal)
const val minus7 = twoVal.minus(longVal)
const val minus8 = twoVal.minus(floatVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(byteVal)
const val times5 = twoVal.times(shortVal)
const val times6 = twoVal.times(intVal)
const val times7 = twoVal.times(longVal)
const val times8 = twoVal.times(floatVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(byteVal)
const val div5 = twoVal.div(shortVal)
const val div6 = twoVal.div(intVal)
const val div7 = twoVal.div(longVal)
const val div8 = twoVal.div(floatVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(byteVal)
const val rem5 = twoVal.rem(shortVal)
const val rem6 = twoVal.rem(intVal)
const val rem7 = twoVal.rem(longVal)
const val rem8 = twoVal.rem(floatVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toChar()
const val convert2 = oneVal.toInt()
const val convert3 = oneVal.toLong()
const val convert4 = oneVal.toFloat()
const val convert5 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0.5) return "Fail 5.1"
if (div2 != 1.0) return "Fail 5.2"
if (div3 != 1.5) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != '') return "Fail 8.1"
if (convert2 != 1) return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1.0f) return "Fail 8.4"
if (convert5 != 1.0) return "Fail 8.5"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1.0") return "Fail 10.1"
if (toString2 != "2.0") return "Fail 10.2"
return "OK"
}
@@ -0,0 +1,164 @@
const val minusOneVal = -1.0f
const val oneVal = 1.0f
const val twoVal = 2.0f
const val threeVal = 3.0f
const val fourVal = 4.0f
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(byteVal)
const val compareTo5 = twoVal.compareTo(shortVal)
const val compareTo6 = twoVal.compareTo(intVal)
const val compareTo7 = twoVal.compareTo(longVal)
const val compareTo8 = twoVal.compareTo(doubleVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(byteVal)
const val plus5 = twoVal.plus(shortVal)
const val plus6 = twoVal.plus(intVal)
const val plus7 = twoVal.plus(longVal)
const val plus8 = twoVal.plus(doubleVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(byteVal)
const val minus5 = twoVal.minus(shortVal)
const val minus6 = twoVal.minus(intVal)
const val minus7 = twoVal.minus(longVal)
const val minus8 = twoVal.minus(doubleVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(byteVal)
const val times5 = twoVal.times(shortVal)
const val times6 = twoVal.times(intVal)
const val times7 = twoVal.times(longVal)
const val times8 = twoVal.times(doubleVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(byteVal)
const val div5 = twoVal.div(shortVal)
const val div6 = twoVal.div(intVal)
const val div7 = twoVal.div(longVal)
const val div8 = twoVal.div(doubleVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(byteVal)
const val rem5 = twoVal.rem(shortVal)
const val rem6 = twoVal.rem(intVal)
const val rem7 = twoVal.rem(longVal)
const val rem8 = twoVal.rem(doubleVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toChar()
const val convert2 = oneVal.toInt()
const val convert3 = oneVal.toLong()
const val convert4 = oneVal.toFloat()
const val convert5 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0.5f) return "Fail 5.1"
if (div2 != 1.0f) return "Fail 5.2"
if (div3 != 1.5f) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != '') return "Fail 8.1"
if (convert2 != 1) return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1.0f) return "Fail 8.4"
if (convert5 != 1.0) return "Fail 8.5"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1.0") return "Fail 10.1"
if (toString2 != "2.0") return "Fail 10.2"
return "OK"
}
@@ -0,0 +1,168 @@
const val minusOneVal = -1
const val oneVal = 1
const val twoVal = 2
const val threeVal = 3
const val fourVal = 4
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(byteVal)
const val compareTo5 = twoVal.compareTo(shortVal)
const val compareTo6 = twoVal.compareTo(longVal)
const val compareTo7 = twoVal.compareTo(floatVal)
const val compareTo8 = twoVal.compareTo(doubleVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(byteVal)
const val plus5 = twoVal.plus(shortVal)
const val plus6 = twoVal.plus(longVal)
const val plus7 = twoVal.plus(floatVal)
const val plus8 = twoVal.plus(doubleVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(byteVal)
const val minus5 = twoVal.minus(shortVal)
const val minus6 = twoVal.minus(longVal)
const val minus7 = twoVal.minus(floatVal)
const val minus8 = twoVal.minus(doubleVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(byteVal)
const val times5 = twoVal.times(shortVal)
const val times6 = twoVal.times(longVal)
const val times7 = twoVal.times(floatVal)
const val times8 = twoVal.times(doubleVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(byteVal)
const val div5 = twoVal.div(shortVal)
const val div6 = twoVal.div(longVal)
const val div7 = twoVal.div(floatVal)
const val div8 = twoVal.div(doubleVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(byteVal)
const val rem5 = twoVal.rem(shortVal)
const val rem6 = twoVal.rem(longVal)
const val rem7 = twoVal.rem(floatVal)
const val rem8 = twoVal.rem(doubleVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toByte()
const val convert2 = oneVal.toChar()
const val convert3 = oneVal.toShort()
const val convert4 = oneVal.toInt()
const val convert5 = oneVal.toLong()
const val convert6 = oneVal.toFloat()
const val convert7 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0) return "Fail 5.1"
if (div2 != 1) return "Fail 5.2"
if (div3 != 1) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != 1) return "Fail 8.1"
if (convert2 != '') return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1) return "Fail 8.4"
if (convert5 != 1) return "Fail 8.5"
if (convert6 != 1.0f) return "Fail 8.6"
if (convert7 != 1.0) return "Fail 8.7"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1") return "Fail 10.1"
if (toString2 != "2") return "Fail 10.2"
return "OK"
}
@@ -0,0 +1,168 @@
const val minusOneVal = -1L
const val oneVal = 1L
const val twoVal = 2L
const val threeVal = 3L
const val fourVal = 4L
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(byteVal)
const val compareTo5 = twoVal.compareTo(shortVal)
const val compareTo6 = twoVal.compareTo(intVal)
const val compareTo7 = twoVal.compareTo(floatVal)
const val compareTo8 = twoVal.compareTo(doubleVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(byteVal)
const val plus5 = twoVal.plus(shortVal)
const val plus6 = twoVal.plus(intVal)
const val plus7 = twoVal.plus(floatVal)
const val plus8 = twoVal.plus(doubleVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(byteVal)
const val minus5 = twoVal.minus(shortVal)
const val minus6 = twoVal.minus(intVal)
const val minus7 = twoVal.minus(floatVal)
const val minus8 = twoVal.minus(doubleVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(byteVal)
const val times5 = twoVal.times(shortVal)
const val times6 = twoVal.times(intVal)
const val times7 = twoVal.times(floatVal)
const val times8 = twoVal.times(doubleVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(byteVal)
const val div5 = twoVal.div(shortVal)
const val div6 = twoVal.div(intVal)
const val div7 = twoVal.div(floatVal)
const val div8 = twoVal.div(doubleVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(byteVal)
const val rem5 = twoVal.rem(shortVal)
const val rem6 = twoVal.rem(intVal)
const val rem7 = twoVal.rem(floatVal)
const val rem8 = twoVal.rem(doubleVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toByte()
const val convert2 = oneVal.toChar()
const val convert3 = oneVal.toShort()
const val convert4 = oneVal.toInt()
const val convert5 = oneVal.toLong()
const val convert6 = oneVal.toFloat()
const val convert7 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0) return "Fail 5.1"
if (div2 != 1) return "Fail 5.2"
if (div3 != 1) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != 1) return "Fail 8.1"
if (convert2 != '') return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1) return "Fail 8.4"
if (convert5 != 1) return "Fail 8.5"
if (convert6 != 1.0f) return "Fail 8.6"
if (convert7 != 1.0) return "Fail 8.7"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1") return "Fail 10.1"
if (toString2 != "2") return "Fail 10.2"
return "OK"
}
@@ -1,36 +0,0 @@
const val add = 1 + 2 + 3 + 4
const val concat = "1" + 2 + 3 + 4
const val divide = 1 / 2.0
const val mul = 10 * 100L
const val toString1 = 1.toString()
const val toString2 = "2".toString()
const val toString3 = '3'.toString()
const val toString4 = 4L.toString()
const val toString5 = 5.0.toString()
const val equals1 = "1" == toString1
const val equals2 = "4" == toString4
const val equals3 = "5.0" == toString5
const val equals4 = mul == 100L
const val equals5 = divide == 0.5
fun box(): String {
if (add != 10) return "Fail 1"
if (concat != "1234") return "Fail 2"
if (divide != 0.5) return "Fail 3"
if (mul != 1000L) return "Fail 4"
if (toString1 != "1") return "Fail 5"
if (toString2 != "2") return "Fail 6"
if (toString3 != "3") return "Fail 7"
if (toString4 != "4") return "Fail 8"
if (toString5 != "5.0") return "Fail 9"
if (equals1 != true) return "Fail 10"
if (equals2 != true) return "Fail 11"
if (equals3 != true) return "Fail 12"
if (equals4 != false) return "Fail 13"
if (equals5 != true) return "Fail 14"
return "OK"
}
@@ -0,0 +1,168 @@
const val minusOneVal = (-1).toShort()
const val oneVal = 1.toShort()
const val twoVal = 2.toShort()
const val threeVal = 3.toShort()
const val fourVal = 4.toShort()
const val byteVal = 2.toByte()
const val shortVal = 2.toShort()
const val intVal = 2
const val longVal = 2L
const val floatVal = 2.0f
const val doubleVal = 2.0
const val compareTo1 = oneVal.compareTo(twoVal)
const val compareTo2 = twoVal.compareTo(twoVal)
const val compareTo3 = threeVal.compareTo(twoVal)
const val compareTo4 = twoVal.compareTo(byteVal)
const val compareTo5 = twoVal.compareTo(intVal)
const val compareTo6 = twoVal.compareTo(longVal)
const val compareTo7 = twoVal.compareTo(floatVal)
const val compareTo8 = twoVal.compareTo(doubleVal)
const val plus1 = oneVal.plus(twoVal)
const val plus2 = twoVal.plus(twoVal)
const val plus3 = threeVal.plus(twoVal)
const val plus4 = twoVal.plus(byteVal)
const val plus5 = twoVal.plus(intVal)
const val plus6 = twoVal.plus(longVal)
const val plus7 = twoVal.plus(floatVal)
const val plus8 = twoVal.plus(doubleVal)
const val minus1 = oneVal.minus(twoVal)
const val minus2 = twoVal.minus(twoVal)
const val minus3 = threeVal.minus(twoVal)
const val minus4 = twoVal.minus(byteVal)
const val minus5 = twoVal.minus(intVal)
const val minus6 = twoVal.minus(longVal)
const val minus7 = twoVal.minus(floatVal)
const val minus8 = twoVal.minus(doubleVal)
const val times1 = oneVal.times(twoVal)
const val times2 = twoVal.times(twoVal)
const val times3 = threeVal.times(twoVal)
const val times4 = twoVal.times(byteVal)
const val times5 = twoVal.times(intVal)
const val times6 = twoVal.times(longVal)
const val times7 = twoVal.times(floatVal)
const val times8 = twoVal.times(doubleVal)
const val div1 = oneVal.div(twoVal)
const val div2 = twoVal.div(twoVal)
const val div3 = threeVal.div(twoVal)
const val div4 = twoVal.div(byteVal)
const val div5 = twoVal.div(intVal)
const val div6 = twoVal.div(longVal)
const val div7 = twoVal.div(floatVal)
const val div8 = twoVal.div(doubleVal)
const val rem1 = oneVal.rem(twoVal)
const val rem2 = twoVal.rem(twoVal)
const val rem3 = threeVal.rem(twoVal)
const val rem4 = twoVal.rem(byteVal)
const val rem5 = twoVal.rem(intVal)
const val rem6 = twoVal.rem(longVal)
const val rem7 = twoVal.rem(floatVal)
const val rem8 = twoVal.rem(doubleVal)
const val unaryPlus1 = oneVal.unaryPlus()
const val unaryPlus2 = minusOneVal.unaryPlus()
const val unaryMinus1 = oneVal.unaryMinus()
const val unaryMinus2 = minusOneVal.unaryMinus()
const val convert1 = oneVal.toByte()
const val convert2 = oneVal.toChar()
const val convert3 = oneVal.toShort()
const val convert4 = oneVal.toInt()
const val convert5 = oneVal.toLong()
const val convert6 = oneVal.toFloat()
const val convert7 = oneVal.toDouble()
const val equals1 = oneVal.equals(twoVal)
const val equals2 = twoVal.equals(twoVal)
const val equals3 = threeVal.equals(twoVal)
const val equals4 = fourVal.equals(twoVal)
const val equals5 = oneVal.equals("1")
const val toString1 = oneVal.toString()
const val toString2 = twoVal.toString()
fun box(): String {
if (compareTo1 != -1) return "Fail 1.1"
if (compareTo2 != 0) return "Fail 1.2"
if (compareTo3 != 1) return "Fail 1.3"
if (compareTo4 != 0) return "Fail 1.4"
if (compareTo5 != 0) return "Fail 1.5"
if (compareTo6 != 0) return "Fail 1.6"
if (compareTo7 != 0) return "Fail 1.7"
if (compareTo8 != 0) return "Fail 1.8"
if (plus1 != 3) return "Fail 2.1"
if (plus2 != 4) return "Fail 2.2"
if (plus3 != 5) return "Fail 2.3"
if (plus4 != 4) return "Fail 2.4"
if (plus5 != 4) return "Fail 2.5"
if (plus6 != 4) return "Fail 2.6"
if (plus7 != 4) return "Fail 2.7"
if (plus8 != 4) return "Fail 2.8"
if (minus1 != -1) return "Fail 3.1"
if (minus2 != 0) return "Fail 3.2"
if (minus3 != 1) return "Fail 3.3"
if (minus4 != 0) return "Fail 3.4"
if (minus5 != 0) return "Fail 3.5"
if (minus6 != 0) return "Fail 3.6"
if (minus7 != 0.0f) return "Fail 3.7"
if (minus8 != 0.0) return "Fail 3.8"
if (times1 != 2) return "Fail 4.1"
if (times2 != 4) return "Fail 4.2"
if (times3 != 6) return "Fail 4.3"
if (times4 != 4) return "Fail 4.4"
if (times5 != 4) return "Fail 4.5"
if (times6 != 4) return "Fail 4.6"
if (times7 != 4.0f) return "Fail 4.7"
if (times8 != 4.0) return "Fail 4.8"
if (div1 != 0) return "Fail 5.1"
if (div2 != 1) return "Fail 5.2"
if (div3 != 1) return "Fail 5.3"
if (div4 != 1) return "Fail 5.4"
if (div5 != 1) return "Fail 5.5"
if (div6 != 1) return "Fail 5.6"
if (div7 != 1.0f) return "Fail 5.7"
if (div8 != 1.0) return "Fail 5.8"
if (rem1 != 1) return "Fail 6.1"
if (rem2 != 0) return "Fail 6.2"
if (rem3 != 1) return "Fail 6.3"
if (rem4 != 0) return "Fail 6.4"
if (rem5 != 0) return "Fail 6.5"
if (rem6 != 0) return "Fail 6.6"
if (rem7 != 0.0f) return "Fail 6.7"
if (rem8 != 0.0) return "Fail 6.8"
if (unaryPlus1 != 1) return "Fail 7.1"
if (unaryPlus2 != -1) return "Fail 7.2"
if (unaryMinus1 != -1) return "Fail 7.3"
if (unaryMinus2 != 1) return "Fail 7.4"
if (convert1 != 1) return "Fail 8.1"
if (convert2 != '') return "Fail 8.2"
if (convert3 != 1) return "Fail 8.3"
if (convert4 != 1) return "Fail 8.4"
if (convert5 != 1) return "Fail 8.5"
if (convert6 != 1.0f) return "Fail 8.6"
if (convert7 != 1.0) return "Fail 8.7"
if (equals1 != false) return "Fail 9.1"
if (equals2 != true) return "Fail 9.2"
if (equals3 != false) return "Fail 9.3"
if (equals4 != false) return "Fail 9.4"
if (equals5 != false) return "Fail 9.5"
if (toString1 != "1") return "Fail 10.1"
if (toString2 != "2") return "Fail 10.2"
return "OK"
}
@@ -0,0 +1,49 @@
const val someStr = "123"
const val otherStr = "other"
const val oneVal = 1
const val plus1 = someStr.plus(otherStr)
const val plus2 = someStr.plus(oneVal)
const val length1 = someStr.length
const val length2 = otherStr.length
const val get1 = someStr.get(0)
const val get2 = otherStr.get(oneVal)
const val compareTo1 = someStr.compareTo("123")
const val compareTo2 = someStr.compareTo(otherStr)
const val compareTo3 = otherStr.compareTo(someStr)
const val equals1 = someStr.equals("123")
const val equals2 = someStr.equals(otherStr)
const val equals3 = otherStr.equals(someStr)
const val equals4 = someStr.equals(oneVal)
const val equals5 = someStr.equals(1)
const val toString1 = someStr.toString()
fun box(): String {
if (plus1 != "123other") return "Fail 1.1"
if (plus2 != "1231") return "Fail 1.2"
if (length1 != 3) return "Fail 2.1"
if (length2 != 5) return "Fail 2.2"
if (get1 != '1') return "Fail 3.1"
if (get2 != 't') return "Fail 3.2"
if (compareTo1 != 0) return "Fail 4.1"
if (compareTo2 >= 0) return "Fail 4.2"
if (compareTo3 <= 0) return "Fail 4.3"
if (equals1 != true) return "Fail 5.1"
if (equals2 != false) return "Fail 5.2"
if (equals3 != false) return "Fail 5.3"
if (equals4 != false) return "Fail 5.4"
if (equals5 != false) return "Fail 5.5"
if (toString1 != "123") return "Fail 6.1"
return "OK"
}
@@ -0,0 +1,13 @@
// WITH_STDLIB
const val byteVal: UByte = 1u
const val shortVal: UShort = 2u
const val intVal: UInt = 3u
const val longVal: ULong = 4uL
fun box(): String {
if (byteVal != 1u.toUByte()) return "Fail 1"
if (shortVal != 2u.toUShort()) return "Fail 2"
if (intVal != 3u.toUInt()) return "Fail 3"
if (longVal != 4u.toULong()) return "Fail 4"
return "OK"
}
@@ -20116,6 +20116,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
}
@Test
@TestMetadata("unsigned.kt")
public void testUnsigned() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/unsigned.kt");
}
}
@Nested