Add MutableMap.remove(K, V) as built-in declaration

Use PlatformDependent annotation to guarantee it's only be available for JDK8
Also adjust type-safe bridges and mutable collection stubs generation
This commit is contained in:
Denis Zharkov
2016-04-28 09:09:25 +03:00
parent 55c4f875c8
commit d259b91143
41 changed files with 875 additions and 77 deletions
@@ -4,17 +4,16 @@ val concurrent: ConcurrentMap<String, Int> = null!!
val concurrentHash: ConcurrentHashMap<String, Int> = null!!
fun foo() {
// TODO: Too permissive
concurrent.remove("", 1)
concurrent.remove("", "")
concurrent.remove("", <!TYPE_MISMATCH!>""<!>)
concurrentHash.remove("", 1)
concurrentHash.remove("", "")
concurrentHash.remove("", <!TYPE_MISMATCH!>""<!>)
// Flexible types
concurrent.remove(null, 1)
concurrent.remove(null, null)
// @PurelyImplements
concurrentHash.remove(null, 1)
concurrentHash.remove(null, null)
concurrentHash.remove(<!NULL_FOR_NONNULL_TYPE!>null<!>, 1)
concurrentHash.remove(<!NULL_FOR_NONNULL_TYPE!>null<!>, <!NULL_FOR_NONNULL_TYPE!>null<!>)
}