Provide the way to specify implicit default for a readonly or mutable map.

Refactor: rename default key and value providers.
This commit is contained in:
Ilya Gorbunov
2015-06-17 20:54:25 +03:00
parent d137a83471
commit 5306e88425
5 changed files with 139 additions and 42 deletions
@@ -12,7 +12,7 @@ class ValByMapExtensionsTest {
val b: String by map
val c: Any by map
val d: String? by map
val e: Any by map
val e: String? by map.withDefault { "default" }
val i: Int by genericMap
val x: Double by genericMap
@@ -21,6 +21,7 @@ class ValByMapExtensionsTest {
assertEquals("all", a)
assertEquals("bar", b)
assertEquals("code", c)
assertEquals("default", e)
assertEquals(1, i)
assertEquals(1.0, x)
fails { d }
@@ -37,7 +38,7 @@ class VarByMapExtensionsTest {
var b: Any? by map
var c: Int by map
var d: String? by map
var a2: String by map2
var a2: String by map2.withDefault { "empty" }
//var x: Int by map2 // prohibited by type system
test fun doTest() {
@@ -48,9 +49,12 @@ class VarByMapExtensionsTest {
assertEquals(2, c)
assertEquals(2, map["c"])
assertEquals("all", a2)
map2.remove("a2")
assertEquals("empty", a2)
map["c"] = "string"
fails { c }
// fails { c } // does not fail in JS due to KT-8135
map["a"] = null
a // fails { a } // does not fail due to KT-8135