Add Map.getOrDefault method as PlatformDependent declaration with refined signature

- First parameter should have type of K instead of Any
- Special bridge should return second parameter if a key has wrong type
- Special bridge may throw an exception if defaultValue has wrong type

 #KT-13209 Fixed
This commit is contained in:
Denis Zharkov
2016-07-27 12:14:08 +03:00
parent 169acf2f31
commit 915e36cb02
15 changed files with 353 additions and 26 deletions
@@ -0,0 +1,18 @@
abstract class A : Map<Int, String>
fun foo(x: Map<Int, String>, a: A, b: java.util.HashMap<Int, String>) {
x.getOrDefault(1, "")
x.getOrDefault(<!TYPE_MISMATCH!>""<!>, "")
x.getOrDefault(1, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
x.getOrDefault(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
a.getOrDefault(1, "")
a.getOrDefault(<!TYPE_MISMATCH!>""<!>, "")
a.getOrDefault(1, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
a.getOrDefault(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
b.getOrDefault(1, "")
b.getOrDefault(<!TYPE_MISMATCH!>""<!>, "")
b.getOrDefault(1, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
b.getOrDefault(<!TYPE_MISMATCH!>""<!>, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
}