Support mod and floorDiv extensions in constant evaluator
Ignore evaluation tests for floorDiv and mod with FIR for now.
This commit is contained in:
+6
@@ -8981,6 +8981,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
runTest("compiler/testData/diagnostics/tests/evaluate/binaryMinusIndependentExpType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("customExtensionOverKotlinExtensionInConst.kt")
|
||||
public void testCustomExtensionOverKotlinExtensionInConst() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/evaluate/customExtensionOverKotlinExtensionInConst.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("divisionByZero.kt")
|
||||
public void testDivisionByZero() throws Exception {
|
||||
|
||||
+12
@@ -14290,6 +14290,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/evaluate/divide.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("floorDiv.kt")
|
||||
public void testFloorDiv() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/floorDiv.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intrinsics.kt")
|
||||
public void testIntrinsics() throws Exception {
|
||||
@@ -14326,6 +14332,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/evaluate/minus.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mod.kt")
|
||||
public void testMod() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/mod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiply.kt")
|
||||
public void testMultiply() throws Exception {
|
||||
|
||||
+38
-14
@@ -1,19 +1,7 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* Copyright 2010-2021 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.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION", "DEPRECATION_ERROR", "NON_EXHAUSTIVE_WHEN")
|
||||
|
||||
package org.jetbrains.kotlin.resolve.constants.evaluate
|
||||
@@ -143,6 +131,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Byte).plus(right as Byte)
|
||||
"rem" -> return (left as Byte).rem(right as Byte)
|
||||
"times" -> return (left as Byte).times(right as Byte)
|
||||
"mod" -> return (left as Byte).mod(right as Byte)
|
||||
"floorDiv" -> return (left as Byte).floorDiv(right as Byte)
|
||||
}
|
||||
DOUBLE -> when (name) {
|
||||
"compareTo" -> return (left as Byte).compareTo(right as Double)
|
||||
@@ -167,6 +157,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Byte).plus(right as Int)
|
||||
"rem" -> return (left as Byte).rem(right as Int)
|
||||
"times" -> return (left as Byte).times(right as Int)
|
||||
"mod" -> return (left as Byte).mod(right as Int)
|
||||
"floorDiv" -> return (left as Byte).floorDiv(right as Int)
|
||||
}
|
||||
LONG -> when (name) {
|
||||
"compareTo" -> return (left as Byte).compareTo(right as Long)
|
||||
@@ -175,6 +167,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Byte).plus(right as Long)
|
||||
"rem" -> return (left as Byte).rem(right as Long)
|
||||
"times" -> return (left as Byte).times(right as Long)
|
||||
"mod" -> return (left as Byte).mod(right as Long)
|
||||
"floorDiv" -> return (left as Byte).floorDiv(right as Long)
|
||||
}
|
||||
SHORT -> when (name) {
|
||||
"compareTo" -> return (left as Byte).compareTo(right as Short)
|
||||
@@ -183,6 +177,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Byte).plus(right as Short)
|
||||
"rem" -> return (left as Byte).rem(right as Short)
|
||||
"times" -> return (left as Byte).times(right as Short)
|
||||
"mod" -> return (left as Byte).mod(right as Short)
|
||||
"floorDiv" -> return (left as Byte).floorDiv(right as Short)
|
||||
}
|
||||
ANY -> when (name) {
|
||||
"equals" -> return (left as Byte).equals(right)
|
||||
@@ -217,6 +213,7 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Double).plus(right as Double)
|
||||
"rem" -> return (left as Double).rem(right as Double)
|
||||
"times" -> return (left as Double).times(right as Double)
|
||||
"mod" -> return (left as Double).mod(right as Double)
|
||||
}
|
||||
FLOAT -> when (name) {
|
||||
"compareTo" -> return (left as Double).compareTo(right as Float)
|
||||
@@ -225,6 +222,7 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Double).plus(right as Float)
|
||||
"rem" -> return (left as Double).rem(right as Float)
|
||||
"times" -> return (left as Double).times(right as Float)
|
||||
"mod" -> return (left as Double).mod(right as Float)
|
||||
}
|
||||
INT -> when (name) {
|
||||
"compareTo" -> return (left as Double).compareTo(right as Int)
|
||||
@@ -270,6 +268,7 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Float).plus(right as Double)
|
||||
"rem" -> return (left as Float).rem(right as Double)
|
||||
"times" -> return (left as Float).times(right as Double)
|
||||
"mod" -> return (left as Float).mod(right as Double)
|
||||
}
|
||||
FLOAT -> when (name) {
|
||||
"compareTo" -> return (left as Float).compareTo(right as Float)
|
||||
@@ -278,6 +277,7 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Float).plus(right as Float)
|
||||
"rem" -> return (left as Float).rem(right as Float)
|
||||
"times" -> return (left as Float).times(right as Float)
|
||||
"mod" -> return (left as Float).mod(right as Float)
|
||||
}
|
||||
INT -> when (name) {
|
||||
"compareTo" -> return (left as Float).compareTo(right as Int)
|
||||
@@ -321,6 +321,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"times" -> return (left as Int).times(right as Int)
|
||||
"ushr" -> return (left as Int).ushr(right as Int)
|
||||
"xor" -> return (left as Int).xor(right as Int)
|
||||
"mod" -> return (left as Int).mod(right as Int)
|
||||
"floorDiv" -> return (left as Int).floorDiv(right as Int)
|
||||
}
|
||||
BYTE -> when (name) {
|
||||
"compareTo" -> return (left as Int).compareTo(right as Byte)
|
||||
@@ -329,6 +331,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Int).plus(right as Byte)
|
||||
"rem" -> return (left as Int).rem(right as Byte)
|
||||
"times" -> return (left as Int).times(right as Byte)
|
||||
"mod" -> return (left as Int).mod(right as Byte)
|
||||
"floorDiv" -> return (left as Int).floorDiv(right as Byte)
|
||||
}
|
||||
DOUBLE -> when (name) {
|
||||
"compareTo" -> return (left as Int).compareTo(right as Double)
|
||||
@@ -353,6 +357,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Int).plus(right as Long)
|
||||
"rem" -> return (left as Int).rem(right as Long)
|
||||
"times" -> return (left as Int).times(right as Long)
|
||||
"mod" -> return (left as Int).mod(right as Long)
|
||||
"floorDiv" -> return (left as Int).floorDiv(right as Long)
|
||||
}
|
||||
SHORT -> when (name) {
|
||||
"compareTo" -> return (left as Int).compareTo(right as Short)
|
||||
@@ -361,6 +367,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Int).plus(right as Short)
|
||||
"rem" -> return (left as Int).rem(right as Short)
|
||||
"times" -> return (left as Int).times(right as Short)
|
||||
"mod" -> return (left as Int).mod(right as Short)
|
||||
"floorDiv" -> return (left as Int).floorDiv(right as Short)
|
||||
}
|
||||
ANY -> when (name) {
|
||||
"equals" -> return (left as Int).equals(right)
|
||||
@@ -377,6 +385,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"rem" -> return (left as Long).rem(right as Long)
|
||||
"times" -> return (left as Long).times(right as Long)
|
||||
"xor" -> return (left as Long).xor(right as Long)
|
||||
"mod" -> return (left as Long).mod(right as Long)
|
||||
"floorDiv" -> return (left as Long).floorDiv(right as Long)
|
||||
}
|
||||
BYTE -> when (name) {
|
||||
"compareTo" -> return (left as Long).compareTo(right as Byte)
|
||||
@@ -385,6 +395,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Long).plus(right as Byte)
|
||||
"rem" -> return (left as Long).rem(right as Byte)
|
||||
"times" -> return (left as Long).times(right as Byte)
|
||||
"mod" -> return (left as Long).mod(right as Byte)
|
||||
"floorDiv" -> return (left as Long).floorDiv(right as Byte)
|
||||
}
|
||||
DOUBLE -> when (name) {
|
||||
"compareTo" -> return (left as Long).compareTo(right as Double)
|
||||
@@ -412,6 +424,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"shr" -> return (left as Long).shr(right as Int)
|
||||
"times" -> return (left as Long).times(right as Int)
|
||||
"ushr" -> return (left as Long).ushr(right as Int)
|
||||
"mod" -> return (left as Long).mod(right as Int)
|
||||
"floorDiv" -> return (left as Long).floorDiv(right as Int)
|
||||
}
|
||||
SHORT -> when (name) {
|
||||
"compareTo" -> return (left as Long).compareTo(right as Short)
|
||||
@@ -420,6 +434,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Long).plus(right as Short)
|
||||
"rem" -> return (left as Long).rem(right as Short)
|
||||
"times" -> return (left as Long).times(right as Short)
|
||||
"mod" -> return (left as Long).mod(right as Short)
|
||||
"floorDiv" -> return (left as Long).floorDiv(right as Short)
|
||||
}
|
||||
ANY -> when (name) {
|
||||
"equals" -> return (left as Long).equals(right)
|
||||
@@ -433,6 +449,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Short).plus(right as Byte)
|
||||
"rem" -> return (left as Short).rem(right as Byte)
|
||||
"times" -> return (left as Short).times(right as Byte)
|
||||
"mod" -> return (left as Short).mod(right as Byte)
|
||||
"floorDiv" -> return (left as Short).floorDiv(right as Byte)
|
||||
}
|
||||
DOUBLE -> when (name) {
|
||||
"compareTo" -> return (left as Short).compareTo(right as Double)
|
||||
@@ -457,6 +475,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Short).plus(right as Int)
|
||||
"rem" -> return (left as Short).rem(right as Int)
|
||||
"times" -> return (left as Short).times(right as Int)
|
||||
"mod" -> return (left as Short).mod(right as Int)
|
||||
"floorDiv" -> return (left as Short).floorDiv(right as Int)
|
||||
}
|
||||
LONG -> when (name) {
|
||||
"compareTo" -> return (left as Short).compareTo(right as Long)
|
||||
@@ -465,6 +485,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Short).plus(right as Long)
|
||||
"rem" -> return (left as Short).rem(right as Long)
|
||||
"times" -> return (left as Short).times(right as Long)
|
||||
"mod" -> return (left as Short).mod(right as Long)
|
||||
"floorDiv" -> return (left as Short).floorDiv(right as Long)
|
||||
}
|
||||
SHORT -> when (name) {
|
||||
"compareTo" -> return (left as Short).compareTo(right as Short)
|
||||
@@ -473,6 +495,8 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri
|
||||
"plus" -> return (left as Short).plus(right as Short)
|
||||
"rem" -> return (left as Short).rem(right as Short)
|
||||
"times" -> return (left as Short).times(right as Short)
|
||||
"mod" -> return (left as Short).mod(right as Short)
|
||||
"floorDiv" -> return (left as Short).floorDiv(right as Short)
|
||||
}
|
||||
ANY -> when (name) {
|
||||
"equals" -> return (left as Short).equals(right)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// IGNORE_FIR_DIAGNOSTICS
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
// WITH_RUNTIME
|
||||
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
annotation class Ann(
|
||||
val b: Byte,
|
||||
val s: Short,
|
||||
val i: Int,
|
||||
val l: Long
|
||||
)
|
||||
|
||||
@Ann(10.floorDiv(3), 10.floorDiv(-4), (-10).floorDiv(5), (-10).floorDiv(-6)) class MyClass
|
||||
|
||||
fun box(): String {
|
||||
val annotation = MyClass::class.java.getAnnotation(Ann::class.java)!!
|
||||
if (annotation.b != 3.toByte()) return "fail 1"
|
||||
if (annotation.s != (-3).toShort()) return "fail 2"
|
||||
if (annotation.i != -2) return "fail 3"
|
||||
if (annotation.l != 1L) return "fail 4"
|
||||
return "OK"
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// IGNORE_FIR_DIAGNOSTICS
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
// WITH_RUNTIME
|
||||
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
annotation class Ann(
|
||||
val p1: Byte,
|
||||
val p2: Short,
|
||||
val p3: Int,
|
||||
val p4: Long,
|
||||
val p5: Double,
|
||||
val p6: Float
|
||||
)
|
||||
|
||||
val prop1: Byte = 10.mod(2)
|
||||
val prop2: Short = 10.mod(-3)
|
||||
val prop3: Int = (-10).mod(4)
|
||||
val prop4: Long = (-10).mod(-5)
|
||||
val prop5: Double = 0.25.mod(-100.0)
|
||||
val prop6: Float = 100f.mod(0.33f)
|
||||
|
||||
@Ann(10.mod(2), 10.mod(-3), (-10).mod(4), (-10).mod(5), 0.25.mod(-100.0), 100f.mod(0.33f)) class MyClass
|
||||
|
||||
fun box(): String {
|
||||
val annotation = MyClass::class.java.getAnnotation(Ann::class.java)!!
|
||||
if (annotation.p1 != prop1) return "fail 1, expected = ${prop1}, actual = ${annotation.p1}"
|
||||
if (annotation.p2 != prop2) return "fail 2, expected = ${prop2}, actual = ${annotation.p2}"
|
||||
if (annotation.p3 != prop3) return "fail 3, expected = ${prop3}, actual = ${annotation.p3}"
|
||||
if (annotation.p4 != prop4) return "fail 4, expected = ${prop4}, actual = ${annotation.p4}"
|
||||
if (annotation.p5 != prop5) return "fail 5, expected = ${prop5}, actual = ${annotation.p5}"
|
||||
if (annotation.p6 != prop6) return "fail 6, expected = ${prop6}, actual = ${annotation.p6}"
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
|
||||
|
||||
fun Int.mod(other: Int) = 10
|
||||
fun Int.floorDiv(other: Int): Int = 20
|
||||
|
||||
const val a1 = (-5).mod(2)
|
||||
const val b1 = 5.floorDiv(3)
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
|
||||
|
||||
fun Int.mod(other: Int) = 10
|
||||
fun Int.floorDiv(other: Int): Int = 20
|
||||
|
||||
const val a1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>(-5).mod(2)<!>
|
||||
const val b1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>5.floorDiv(3)<!>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package
|
||||
|
||||
public const val a1: kotlin.Int
|
||||
public const val b1: kotlin.Int
|
||||
public fun kotlin.Int.floorDiv(/*0*/ other: kotlin.Int): kotlin.Int
|
||||
public fun kotlin.Int.mod(/*0*/ other: kotlin.Int): kotlin.Int
|
||||
@@ -20,4 +20,10 @@ val x5 = 0x1234 and 0x5678
|
||||
val x6 = 0x1234 and 0x5678L
|
||||
|
||||
// val x7: 4656.toLong()
|
||||
val x7 = 0x1234L and 0x5678
|
||||
val x7 = 0x1234L and 0x5678
|
||||
|
||||
// val x8: -123457
|
||||
val x8 = (-123_456_789_321).floorDiv(1_000_000)
|
||||
|
||||
// val x9: 79
|
||||
val x9 = (-123_456_789_321).mod(100)
|
||||
Generated
+6
@@ -8987,6 +8987,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/tests/evaluate/binaryMinusIndependentExpType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("customExtensionOverKotlinExtensionInConst.kt")
|
||||
public void testCustomExtensionOverKotlinExtensionInConst() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/evaluate/customExtensionOverKotlinExtensionInConst.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("divisionByZero.kt")
|
||||
public void testDivisionByZero() throws Exception {
|
||||
|
||||
+12
@@ -14290,6 +14290,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/evaluate/divide.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("floorDiv.kt")
|
||||
public void testFloorDiv() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/floorDiv.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intrinsics.kt")
|
||||
public void testIntrinsics() throws Exception {
|
||||
@@ -14326,6 +14332,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/evaluate/minus.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mod.kt")
|
||||
public void testMod() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/mod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiply.kt")
|
||||
public void testMultiply() throws Exception {
|
||||
|
||||
+12
@@ -14290,6 +14290,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/evaluate/divide.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("floorDiv.kt")
|
||||
public void testFloorDiv() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/floorDiv.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("intrinsics.kt")
|
||||
public void testIntrinsics() throws Exception {
|
||||
@@ -14326,6 +14332,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/evaluate/minus.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mod.kt")
|
||||
public void testMod() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/mod.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiply.kt")
|
||||
public void testMultiply() throws Exception {
|
||||
|
||||
+10
@@ -11749,6 +11749,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/evaluate/divide.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("floorDiv.kt")
|
||||
public void testFloorDiv() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/floorDiv.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("intrinsics.kt")
|
||||
public void testIntrinsics() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/intrinsics.kt");
|
||||
@@ -11779,6 +11784,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/evaluate/minus.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("mod.kt")
|
||||
public void testMod() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/mod.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("multiply.kt")
|
||||
public void testMultiply() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/evaluate/multiply.kt");
|
||||
|
||||
Reference in New Issue
Block a user