Add operator 'rem' as extension to BigInteger

#KT-14650 Fixed

 Note that after this change behaviour of '%' on BigInteger is changed,
now it works like a proper remainder
This commit is contained in:
Mikhail Zarechenskiy
2016-12-12 17:49:58 +03:00
parent e83568bcf3
commit 5a829809d9
7 changed files with 41 additions and 1 deletions
@@ -0,0 +1,11 @@
// TARGET_BACKEND: JVM
// LANGUAGE_VERSION: 1.0
// FULL_JDK
import java.math.BigInteger
fun box(): String {
val m = BigInteger.valueOf(-2) % BigInteger.valueOf(3)
return if (m != BigInteger.valueOf(1)) "Fail: BigInteger(-2) mod BigInteger(3) == $m" else "OK"
}
@@ -0,0 +1,3 @@
public final class PercentAsModOnBigIntegerWithoutRemKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
}
@@ -10547,6 +10547,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
doTest(fileName);
}
@TestMetadata("percentAsModOnBigIntegerWithoutRem.kt")
public void testPercentAsModOnBigIntegerWithoutRem() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/percentAsModOnBigIntegerWithoutRem.kt");
doTest(fileName);
}
@TestMetadata("remAssignmentOperation.kt")
public void testRemAssignmentOperation() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/remAssignmentOperation.kt");
@@ -10547,6 +10547,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
doTest(fileName);
}
@TestMetadata("percentAsModOnBigIntegerWithoutRem.kt")
public void testPercentAsModOnBigIntegerWithoutRem() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/percentAsModOnBigIntegerWithoutRem.kt");
doTest(fileName);
}
@TestMetadata("remAssignmentOperation.kt")
public void testRemAssignmentOperation() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/remAssignmentOperation.kt");
@@ -10547,6 +10547,12 @@ public class LightAnalysisModeCodegenTestGenerated extends AbstractLightAnalysis
doTest(fileName);
}
@TestMetadata("percentAsModOnBigIntegerWithoutRem.kt")
public void testPercentAsModOnBigIntegerWithoutRem() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/percentAsModOnBigIntegerWithoutRem.kt");
doTest(fileName);
}
@TestMetadata("remAssignmentOperation.kt")
public void testRemAssignmentOperation() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/operatorConventions/remAssignmentOperation.kt");