From 069711c3d5c73b90d4a851d557d16f96a1a2468d Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Thu, 29 Dec 2016 19:36:31 +0300 Subject: [PATCH] JS: fix translation of float constants. See KT-8413 --- compiler/testData/codegen/box/constants/float.kt | 3 --- .../js/test/semantics/JsCodegenBoxTestGenerated.java | 8 +------- .../kotlin/js/translate/general/Translation.java | 11 +++++++++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/compiler/testData/codegen/box/constants/float.kt b/compiler/testData/codegen/box/constants/float.kt index 38862ceca86..5c60d382df1 100644 --- a/compiler/testData/codegen/box/constants/float.kt +++ b/compiler/testData/codegen/box/constants/float.kt @@ -1,6 +1,3 @@ -// TODO: muted automatically, investigate should it be ran for JS or not -// IGNORE_BACKEND: JS - fun box(): String { if (1F != 1.toFloat()) return "fail 1" if (1.0F != 1.0.toFloat()) return "fail 2" diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 1b8b6362008..a66284162d0 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -4542,13 +4542,7 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { @TestMetadata("float.kt") public void testFloat() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/constants/float.kt"); - try { - doTest(fileName); - } - catch (Throwable ignore) { - return; - } - throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); + doTest(fileName); } @TestMetadata("kt9532.kt") diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java index 9e3eb24355c..41371498cba 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/general/Translation.java @@ -138,6 +138,17 @@ public final class Translation { else if (value instanceof Long) { return JsAstUtils.newLong((Long) value, context); } + else if (value instanceof Float) { + float floatValue = (Float) value; + double doubleValue; + if (Float.isInfinite(floatValue) || Float.isNaN(floatValue)) { + doubleValue = floatValue; + } + else { + doubleValue = Double.parseDouble(Float.toString(floatValue)); + } + return context.program().getNumberLiteral(doubleValue); + } else if (value instanceof Number) { return context.program().getNumberLiteral(((Number) value).doubleValue()); }