From 964bba3530555712963cb4f3a95aa6fdb1d31ce2 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Wed, 7 Apr 2021 16:36:18 +0300 Subject: [PATCH] [FIR] Implement FLOAT_LITERAL_OUT_OF_RANGE diagnostics, fix tests --- .../generator/diagnostics/DiagnosticData.kt | 1 + .../diagnostics/FirDiagnosticsList.kt | 1 + .../fir/analysis/diagnostics/FirErrors.kt | 1 + .../coneDiagnosticToFirDiagnostic.kt | 1 + .../kotlin/fir/builder/BaseFirBuilder.kt | 4 +- .../fir/diagnostics/ConeSimpleDiagnostic.kt | 1 + .../real-literals/p-2/neg/1.1.fir.kt | 50 ------------------- .../real-literals/p-2/neg/1.1.kt | 1 + .../real-literals/p-2/neg/1.4.fir.kt | 50 ------------------- .../real-literals/p-2/neg/1.4.kt | 1 + .../real-literals/p-3/neg/1.1.fir.kt | 50 ------------------- .../real-literals/p-3/neg/1.1.kt | 1 + .../real-literals/p-3/neg/1.2.fir.kt | 50 ------------------- .../real-literals/p-3/neg/1.2.kt | 1 + .../real-literals/p-3/neg/2.1.fir.kt | 26 ---------- .../real-literals/p-3/neg/2.1.kt | 1 + .../real-literals/p-4/neg/1.1.fir.kt | 37 ++++++++------ .../diagnostics/KtFirDataClassConverters.kt | 6 +++ .../api/fir/diagnostics/KtFirDiagnostics.kt | 4 ++ .../fir/diagnostics/KtFirDiagnosticsImpl.kt | 7 +++ 20 files changed, 52 insertions(+), 242 deletions(-) delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.fir.kt delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.fir.kt delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.fir.kt delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.fir.kt delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.fir.kt diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt index fec2b62c615..f03de538130 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt @@ -57,6 +57,7 @@ enum class PositioningStrategy(private val strategy: String? = null) { SUPERTYPES_LIST, RETURN_WITH_LABEL, INT_LITERAL_OUT_OF_RANGE, + FLOAT_LITERAL_OUT_OF_RANGE, LONG_LITERAL_SUFFIX, ; diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 501d3ca3c15..c2182300d73 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -62,6 +62,7 @@ object DIAGNOSTICS_LIST : DiagnosticList() { val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error() val ILLEGAL_ESCAPE by error() val INT_LITERAL_OUT_OF_RANGE by error() + val FLOAT_LITERAL_OUT_OF_RANGE by error() val WRONG_LONG_SUFFIX by error(PositioningStrategy.LONG_LITERAL_SUFFIX) } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 93a9d642e31..4aefe91be30 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -87,6 +87,7 @@ object FirErrors { val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error0() val ILLEGAL_ESCAPE by error0() val INT_LITERAL_OUT_OF_RANGE by error0() + val FLOAT_LITERAL_OUT_OF_RANGE by error0() val WRONG_LONG_SUFFIX by error0(SourceElementPositioningStrategies.LONG_LITERAL_SUFFIX) // Unresolved diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt index fab5cabf9b8..80af52209c4 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt @@ -180,6 +180,7 @@ private fun ConeSimpleDiagnostic.getFactory(): FirDiagnosticFactory0 FirErrors.ILLEGAL_PROJECTION_USAGE DiagnosticKind.MissingStdlibClass -> FirErrors.MISSING_STDLIB_CLASS DiagnosticKind.IntLiteralOutOfRange -> FirErrors.INT_LITERAL_OUT_OF_RANGE + DiagnosticKind.FloatLiteralOutOfRange -> FirErrors.FLOAT_LITERAL_OUT_OF_RANGE DiagnosticKind.WrongLongSuffix -> FirErrors.WRONG_LONG_SUFFIX DiagnosticKind.Other -> FirErrors.OTHER_ERROR DiagnosticKind.IncorrectCharacterLiteral -> FirErrors.INCORRECT_CHARACTER_LITERAL diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt index c171e3ad087..e3c0e18b150 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt @@ -345,14 +345,14 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte sourceElement, ConstantValueKind.Float, convertedText, - ConeSimpleDiagnostic("Incorrect float: $text", DiagnosticKind.IllegalConstExpression) + ConeSimpleDiagnostic("Incorrect float: $text", DiagnosticKind.FloatLiteralOutOfRange) ) } else { buildConstOrErrorExpression( sourceElement, ConstantValueKind.Double, convertedText as? Double, - ConeSimpleDiagnostic("Incorrect double: $text", DiagnosticKind.IllegalConstExpression) + ConeSimpleDiagnostic("Incorrect double: $text", DiagnosticKind.FloatLiteralOutOfRange) ) } CHARACTER_CONSTANT -> { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/diagnostics/ConeSimpleDiagnostic.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/diagnostics/ConeSimpleDiagnostic.kt index f680c1379cf..203bbfb263b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/diagnostics/ConeSimpleDiagnostic.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/diagnostics/ConeSimpleDiagnostic.kt @@ -37,6 +37,7 @@ enum class DiagnosticKind { IllegalEscape, IntLiteralOutOfRange, + FloatLiteralOutOfRange, WrongLongSuffix, Other diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.fir.kt deleted file mode 100644 index e110bc4cbe2..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// TESTCASE NUMBER: 1 -val value_1 = 0.0E - -// TESTCASE NUMBER: 2 -val value_2 = 00.0e - -// TESTCASE NUMBER: 3 -val value_3 = 000.00e- - -// TESTCASE NUMBER: 4 -val value_4 = 0000.000E+ - -// TESTCASE NUMBER: 5 -val value_5 = 1.0e - -// TESTCASE NUMBER: 6 -val value_6 = 22.00E+ - -// TESTCASE NUMBER: 7 -val value_7 = 333.000e - -// TESTCASE NUMBER: 8 -val value_8 = 4444.0000E - -// TESTCASE NUMBER: 9 -val value_9 = 55555.0e+ - -// TESTCASE NUMBER: 10 -val value_10 = 666666.00E- - -// TESTCASE NUMBER: 11 -val value_11 = 7777777.000e - -// TESTCASE NUMBER: 12 -val value_12 = 88888888.0000e - -// TESTCASE NUMBER: 13 -val value_13 = 999999999.0E- - -// TESTCASE NUMBER: 14 -val value_14 = 7.888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888e+ - -// TESTCASE NUMBER: 15 -val value_15 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e - -// TESTCASE NUMBER: 16 -val value_16 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e- - -// TESTCASE NUMBER: 17 -val value_17 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+ diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.kt index fcf5de5a042..bdc8dac7469 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.1.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) * diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.fir.kt deleted file mode 100644 index dab6ea87f28..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// TESTCASE NUMBER: 1 -val value_1 = 0.0EF - -// TESTCASE NUMBER: 2 -val value_2 = 00.0ef - -// TESTCASE NUMBER: 3 -val value_3 = 000.00e-f - -// TESTCASE NUMBER: 4 -val value_4 = 0000.000E+F - -// TESTCASE NUMBER: 5 -val value_5 = 1.0eF - -// TESTCASE NUMBER: 6 -val value_6 = 22.00E+f - -// TESTCASE NUMBER: 7 -val value_7 = 333.000ef - -// TESTCASE NUMBER: 8 -val value_8 = 4444.0000Ef - -// TESTCASE NUMBER: 9 -val value_9 = 55555.0e+F - -// TESTCASE NUMBER: 10 -val value_10 = 666666.00E-F - -// TESTCASE NUMBER: 11 -val value_11 = 7777777.000eF - -// TESTCASE NUMBER: 12 -val value_12 = 88888888.0000ef - -// TESTCASE NUMBER: 13 -val value_13 = 999999999.0E-F - -// TESTCASE NUMBER: 14 -val value_14 = 7.888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888e+f - -// TESTCASE NUMBER: 15 -val value_15 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eF - -// TESTCASE NUMBER: 16 -val value_16 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-f - -// TESTCASE NUMBER: 17 -val value_17 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+F diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.kt index 92ad5bb014b..0fa519b8a5c 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-2/neg/1.4.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) * diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.fir.kt deleted file mode 100644 index a47bbdde643..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// TESTCASE NUMBER: 1 -val value_1 = .0E - -// TESTCASE NUMBER: 2 -val value_2 = .0e - -// TESTCASE NUMBER: 3 -val value_3 = .00e- - -// TESTCASE NUMBER: 4 -val value_4 = .000E+ - -// TESTCASE NUMBER: 5 -val value_5 = .0e - -// TESTCASE NUMBER: 6 -val value_6 = .00E+ - -// TESTCASE NUMBER: 7 -val value_7 = .000e - -// TESTCASE NUMBER: 8 -val value_8 = .0000E - -// TESTCASE NUMBER: 9 -val value_9 = .0e+ - -// TESTCASE NUMBER: 10 -val value_10 = .00E- - -// TESTCASE NUMBER: 11 -val value_11 = .000e - -// TESTCASE NUMBER: 12 -val value_12 = .0000e - -// TESTCASE NUMBER: 13 -val value_13 = .0E- - -// TESTCASE NUMBER: 14 -val value_14 = .888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888e+ - -// TESTCASE NUMBER: 15 -val value_15 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e - -// TESTCASE NUMBER: 16 -val value_16 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e- - -// TESTCASE NUMBER: 17 -val value_17 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+ diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.kt index 508aa17f3df..793be914a9c 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.1.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) * diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.fir.kt deleted file mode 100644 index 89b08666ba6..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.fir.kt +++ /dev/null @@ -1,50 +0,0 @@ -// TESTCASE NUMBER: 1 -val value_1 = .0EF - -// TESTCASE NUMBER: 2 -val value_2 = .0ef - -// TESTCASE NUMBER: 3 -val value_3 = .00e-f - -// TESTCASE NUMBER: 4 -val value_4 = .000E+F - -// TESTCASE NUMBER: 5 -val value_5 = .0eF - -// TESTCASE NUMBER: 6 -val value_6 = .00E+f - -// TESTCASE NUMBER: 7 -val value_7 = .000ef - -// TESTCASE NUMBER: 8 -val value_8 = .0000Ef - -// TESTCASE NUMBER: 9 -val value_9 = .0e+F - -// TESTCASE NUMBER: 10 -val value_10 = .00E-F - -// TESTCASE NUMBER: 11 -val value_11 = .000eF - -// TESTCASE NUMBER: 12 -val value_12 = .0000ef - -// TESTCASE NUMBER: 13 -val value_13 = .0E-F - -// TESTCASE NUMBER: 14 -val value_14 = .888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888e+f - -// TESTCASE NUMBER: 15 -val value_15 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eF - -// TESTCASE NUMBER: 16 -val value_16 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-f - -// TESTCASE NUMBER: 17 -val value_17 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+F diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.kt index 16de6641931..0aee2ebffba 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/1.2.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) * diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.fir.kt deleted file mode 100644 index 07cd9ef8692..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.fir.kt +++ /dev/null @@ -1,26 +0,0 @@ -// TESTCASE NUMBER: 1 -val value_1 = 0e - -// TESTCASE NUMBER: 2 -val value_2 = 00e- - -// TESTCASE NUMBER: 3 -val value_3 = 000E+ - -// TESTCASE NUMBER: 4 -val value_4 = 0000e+ - -// TESTCASE NUMBER: 5 -val value_5 = 00000000000000000000000000000000000000E - -// TESTCASE NUMBER: 6 -val value_6 = 34567E+ - -// TESTCASE NUMBER: 7 -val value_7 = 456e- - -// TESTCASE NUMBER: 8 -val value_8 = 55555e+f - -// TESTCASE NUMBER: 9 -val value_9 = 666666E-F diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.kt index 63ab8cb48f2..fc42359202c 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-3/neg/2.1.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) * diff --git a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-4/neg/1.1.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-4/neg/1.1.fir.kt index 855dc5eda15..7c1557713f5 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-4/neg/1.1.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/expressions/constant-literals/real-literals/p-4/neg/1.1.fir.kt @@ -1,44 +1,53 @@ +/* + * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) + * + * SPEC VERSION: 0.1-100 + * MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1 + * NUMBER: 1 + * DESCRIPTION: Real literals without digits after an exponent mark and with undescores in the different pisitions. + */ + // TESTCASE NUMBER: 1 -val value_1 = .0_0e- +val value_1 = .0_0e- // TESTCASE NUMBER: 2 -val value_2 = 0_0___0E+ +val value_2 = 0_0___0E+ // TESTCASE NUMBER: 3 -val value_3 = .0_0e-F +val value_3 = .0_0e-F // TESTCASE NUMBER: 4 -val value_4 = 0__________________________0E+ +val value_4 = 0__________________________0E+ // TESTCASE NUMBER: 5 -val value_5 = 0_00e +val value_5 = 0_00e // TESTCASE NUMBER: 6 -val value_6 = .0_0__0___0E +val value_6 = .0_0__0___0E // TESTCASE NUMBER: 7 -val value_7 = 0_1e+f +val value_7 = 0_1e+f // TESTCASE NUMBER: 8 -val value_8 = .0_0E- +val value_8 = .0_0E- // TESTCASE NUMBER: 9 -val value_9 = 0___0__0e +val value_9 = 0___0__0e // TESTCASE NUMBER: 10 -val value_10 = 0_00_0ef +val value_10 = 0_00_0ef // TESTCASE NUMBER: 11 -val value_11 = .0_5E-F +val value_11 = .0_5E-F // TESTCASE NUMBER: 12 -val value_12 = .8____8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888_____8888888888888888888e+f +val value_12 = .8____8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888_____8888888888888888888e+f // TESTCASE NUMBER: 13 -val value_13 = 0_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_0eF +val value_13 = 0_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_0eF // TESTCASE NUMBER: 14 val value_14 = 0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_e-f // TESTCASE NUMBER: 15 -val value_15 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+ +val value_15 = .000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+ diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index efdc638e5ca..d22b0a3ca90 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -155,6 +155,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.FLOAT_LITERAL_OUT_OF_RANGE) { firDiagnostic -> + FloatLiteralOutOfRangeImpl( + firDiagnostic as FirPsiDiagnostic<*>, + token, + ) + } add(FirErrors.WRONG_LONG_SUFFIX) { firDiagnostic -> WrongLongSuffixImpl( firDiagnostic as FirPsiDiagnostic<*>, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index 37a40e7c188..7e7682a6f7b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -128,6 +128,10 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = IntLiteralOutOfRange::class } + abstract class FloatLiteralOutOfRange : KtFirDiagnostic() { + override val diagnosticClass get() = FloatLiteralOutOfRange::class + } + abstract class WrongLongSuffix : KtFirDiagnostic() { override val diagnosticClass get() = WrongLongSuffix::class } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 170790c1bf6..e0251c1a87c 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -180,6 +180,13 @@ internal class IntLiteralOutOfRangeImpl( override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) } +internal class FloatLiteralOutOfRangeImpl( + firDiagnostic: FirPsiDiagnostic<*>, + override val token: ValidityToken, +) : KtFirDiagnostic.FloatLiteralOutOfRange(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic) +} + internal class WrongLongSuffixImpl( firDiagnostic: FirPsiDiagnostic<*>, override val token: ValidityToken,