From 0849798af01242aaa639ba31962c343029ab8a48 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 23 Jul 2013 15:28:25 +0400 Subject: [PATCH] report only 'The value is out of range' not 'An integer literal does not conform to the expected type Int/Long' --- .../constants/CompileTimeConstantResolver.java | 7 +++---- .../tests/numbers/intValuesOutOfRange.kt | 16 ++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/numbers/intValuesOutOfRange.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java index b8c45a49247..935861672c9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantResolver.java @@ -78,11 +78,10 @@ public class CompileTimeConstantResolver { @NotNull public CompileTimeConstant getIntegerValue(@Nullable Long value, @NotNull JetType expectedType) { + if (value == null) { + return OUT_OF_RANGE; + } if (noExpectedType(expectedType)) { - if (value == null) { - return OUT_OF_RANGE; - } - if (Integer.MIN_VALUE <= value && value <= Integer.MAX_VALUE) { return new IntValue(value.intValue()); } diff --git a/compiler/testData/diagnostics/tests/numbers/intValuesOutOfRange.kt b/compiler/testData/diagnostics/tests/numbers/intValuesOutOfRange.kt new file mode 100644 index 00000000000..f2a50a73bd7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/numbers/intValuesOutOfRange.kt @@ -0,0 +1,16 @@ +package a + +fun foo(i: Int) = i + +fun bar(l: Long) = l + +fun main(args: Array) { + val i = 111111111111111777777777777777 + + //todo add diagnostic text messages + //report only 'The value is out of range' + //not 'An integer literal does not conform to the expected type Int/Long' + val l: Long = 1111111111111117777777777777777 + foo(11111111111111177777777777777) + bar(11111111111111177777777777777) +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 973bb97dcc9..751c26edd0f 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -3789,6 +3789,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/numbers/doublesInSimpleConstraints.kt"); } + @TestMetadata("intValuesOutOfRange.kt") + public void testIntValuesOutOfRange() throws Exception { + doTest("compiler/testData/diagnostics/tests/numbers/intValuesOutOfRange.kt"); + } + @TestMetadata("numbersInSimpleConstraints.kt") public void testNumbersInSimpleConstraints() throws Exception { doTest("compiler/testData/diagnostics/tests/numbers/numbersInSimpleConstraints.kt");