diff --git a/js/js.parser/src/com/google/gwt/dev/js/rhino/TokenStream.java b/js/js.parser/src/com/google/gwt/dev/js/rhino/TokenStream.java index 939f07eb621..8d46d5024ec 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/rhino/TokenStream.java +++ b/js/js.parser/src/com/google/gwt/dev/js/rhino/TokenStream.java @@ -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; } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index d89a02f9482..0d3b0a6efb3 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -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"); diff --git a/js/js.translator/testData/box/jsCode/numberLiteralOverflow.kt b/js/js.translator/testData/box/jsCode/numberLiteralOverflow.kt new file mode 100644 index 00000000000..de814af86d5 --- /dev/null +++ b/js/js.translator/testData/box/jsCode/numberLiteralOverflow.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" +} \ No newline at end of file