From d1a24de2782aa34119f1bce18b7912552d345a7f Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 26 Aug 2016 04:07:30 +0300 Subject: [PATCH] Consequences of map/set specializations removal: - NaNs are no longer usable as keys in maps or elements in sets. - Chars are stored as their underlying type string, and Longs are stored as objects. Opened #KT-13610 --- .../cases/hashMapTypeOfElement.kt | 26 ++++++++++--------- .../cases/hashSetTypeOfElement.kt | 4 +-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/js/js.translator/testData/standardClasses/cases/hashMapTypeOfElement.kt b/js/js.translator/testData/standardClasses/cases/hashMapTypeOfElement.kt index b5b3ba40894..40d2108f142 100644 --- a/js/js.translator/testData/standardClasses/cases/hashMapTypeOfElement.kt +++ b/js/js.translator/testData/standardClasses/cases/hashMapTypeOfElement.kt @@ -23,11 +23,12 @@ fun box(): String { mapWithDoubleKeys[1.0] = 1 assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "mapWithDoubleKeys") - mapWithDoubleKeys.clear() - var dNaN = 0.0 / 0.0 - mapWithDoubleKeys[dNaN] = 100 - assertEquals(100, mapWithDoubleKeys[dNaN]) - assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "dNaN") + // boxed NaNs are not equal, KT-13610 +// mapWithDoubleKeys.clear() +// var dNaN = 0.0 / 0.0 +// mapWithDoubleKeys[dNaN] = 100 +// assertEquals(100, mapWithDoubleKeys[dNaN]) +// assertEquals("number", jsTypeOf (mapWithDoubleKeys.keys.iterator().next()), "dNaN") mapWithDoubleKeys.clear() var dPositiveInfinity = +1.0 / 0.0 @@ -45,11 +46,12 @@ fun box(): String { mapWithFloatKeys[1.0f] = 1 assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "mapWithFloatKeys") - mapWithFloatKeys.clear() - var fNaN: Float = 0.0f / 0.0f - mapWithFloatKeys[fNaN] = 100 - assertEquals(100, mapWithFloatKeys[fNaN]) - assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "fNaN") + // boxed NaNs are not equal, KT-13610 +// mapWithFloatKeys.clear() +// var fNaN: Float = 0.0f / 0.0f +// mapWithFloatKeys[fNaN] = 100 +// assertEquals(100, mapWithFloatKeys[fNaN]) +// assertEquals("number", jsTypeOf (mapWithFloatKeys.keys.iterator().next()), "fNaN") mapWithFloatKeys.clear() var fPositiveInfinity = +1.0f / 0.0f @@ -65,11 +67,11 @@ fun box(): String { val mapWithCharKeys = HashMap() mapWithCharKeys['A'] = 1 - assertEquals("number", jsTypeOf (mapWithCharKeys.keys.iterator().next()), "mapWithCharKeys") + assertEquals("string", jsTypeOf (mapWithCharKeys.keys.iterator().next()), "mapWithCharKeys") val mapWithLongKeys = HashMap() mapWithLongKeys[1L] = 1 - assertEquals("number", jsTypeOf (mapWithLongKeys.keys.iterator().next()), "mapWithLongKeys") + assertEquals("object", jsTypeOf (mapWithLongKeys.keys.iterator().next()), "mapWithLongKeys") val mapWithBooleanKeys = HashMap() mapWithBooleanKeys[true] = 1 diff --git a/js/js.translator/testData/standardClasses/cases/hashSetTypeOfElement.kt b/js/js.translator/testData/standardClasses/cases/hashSetTypeOfElement.kt index a4663dc94a1..be737265ea0 100644 --- a/js/js.translator/testData/standardClasses/cases/hashSetTypeOfElement.kt +++ b/js/js.translator/testData/standardClasses/cases/hashSetTypeOfElement.kt @@ -53,11 +53,11 @@ fun box(): String { val charSet = HashSet() charSet.add('A') - assertEquals("number", jsTypeOf (charSet.iterator().next()), "charSet") + assertEquals("string", jsTypeOf (charSet.iterator().next()), "charSet") val longSet = HashSet() longSet.add(1L) - assertEquals("number", jsTypeOf (longSet.iterator().next()), "longSet") + assertEquals("object", jsTypeOf (longSet.iterator().next()), "longSet") val booleanSet = HashSet() booleanSet.add(true)