diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/NumberTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/NumberTest.java index bf5c08c6754..305d99171d2 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/NumberTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/NumberTest.java @@ -16,6 +16,8 @@ package org.jetbrains.k2js.test.semantics; +import junit.framework.Assert; +import org.jetbrains.k2js.facade.exceptions.TranslationInternalException; import org.jetbrains.k2js.test.SingleFileTranslationTest; /** @@ -45,4 +47,14 @@ public final class NumberTest extends SingleFileTranslationTest { public void testDivision() throws Exception { fooBoxIsValue("SUCCESS"); } + + public void testHexademicalConstant() throws Exception { + try { + fooBoxTest(); + } catch (TranslationInternalException e) { + Throwable cause = e.getCause(); + Assert.assertTrue(cause instanceof IllegalStateException); + Assert.assertTrue(cause.getMessage().startsWith("Unsupported long constant ")); + } + } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java index 607f2c5bbcd..28f91f0c246 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java @@ -89,8 +89,10 @@ public final class ExpressionVisitor extends TranslatorVisitor { if (value instanceof Short) { return context.program().getNumberLiteral((Short) value); } - //TODO: long and char - throw new AssertionError(message(expression, "Unsupported constant expression")); + if (value instanceof Long) { + throw new IllegalStateException(message(expression, "Unsupported long constant")); + } + throw new IllegalStateException(message(expression, "Unsupported constant expression")); } @Override diff --git a/js/js.translator/testFiles/number/cases/hexademicalConstant.kt b/js/js.translator/testFiles/number/cases/hexademicalConstant.kt new file mode 100644 index 00000000000..acb080a9e9c --- /dev/null +++ b/js/js.translator/testFiles/number/cases/hexademicalConstant.kt @@ -0,0 +1,4 @@ +fun box(): Boolean { + val i = 0x80000000 + 0x8000000 + return true +}