Fix parsing of JavaScript number literals out of integer range

Fix KT-17219
This commit is contained in:
Alexey Andreev
2017-04-13 14:19:12 +03:00
parent b7de272884
commit b11e33901b
3 changed files with 19 additions and 1 deletions
@@ -797,7 +797,7 @@ public class TokenStream {
this.number = dval;
if (isInteger) {
if (isInteger && this.number >= Integer.MIN_VALUE && this.number <= Integer.MAX_VALUE) {
return NUMBER_INT;
}
@@ -5051,6 +5051,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
doTest(fileName);
}
@TestMetadata("numberLiteralOverflow.kt")
public void testNumberLiteralOverflow() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsCode/numberLiteralOverflow.kt");
doTest(fileName);
}
@TestMetadata("object.kt")
public void testObject() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsCode/object.kt");
@@ -0,0 +1,12 @@
fun box(): String {
val a = js("0xff000000")
if (a != 4278190080.0) return "fail1: $a"
val b = js("-0xff000000")
if (b != -4278190080.0) return "fail2: $b"
val c = js("10000000000")
if (c != 10000000000.0) return "fail3: $c"
return "OK"
}