From f10ea031739188e1598fe92551cc0feae8d8ba94 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 21 Jul 2017 23:44:30 +0300 Subject: [PATCH] Provide extension to get mutable iterator from the mutable map #KT-18992 Fixed --- libraries/stdlib/src/kotlin/collections/Maps.kt | 3 +-- libraries/stdlib/test/collections/MapTest.kt | 12 ++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/stdlib/src/kotlin/collections/Maps.kt b/libraries/stdlib/src/kotlin/collections/Maps.kt index 780b6e76ed1..6b48e07975c 100644 --- a/libraries/stdlib/src/kotlin/collections/Maps.kt +++ b/libraries/stdlib/src/kotlin/collections/Maps.kt @@ -298,8 +298,7 @@ public inline operator fun Map.iterator(): Iterator MutableMap.iterator(): MutableIterator> = entries.iterator() diff --git a/libraries/stdlib/test/collections/MapTest.kt b/libraries/stdlib/test/collections/MapTest.kt index 913edb14a42..6cf7d6dced3 100644 --- a/libraries/stdlib/test/collections/MapTest.kt +++ b/libraries/stdlib/test/collections/MapTest.kt @@ -97,6 +97,18 @@ class MapTest { assertEquals("beverage,beer,location,Mells,name,James", list.joinToString(",")) } + @Test fun iterateAndMutate() { + val map = mutableMapOf("beverage" to "beer", "location" to "Mells", "name" to "James") + val it = map.iterator() + for (e in it) { + when (e.key) { + "beverage" -> e.setValue("juice") + "location" -> it.remove() + } + } + assertEquals(mapOf("beverage" to "juice", "name" to "James"), map) + } + @Test fun onEach() {