Files
kotlin-fork/compiler/testData/diagnostics/testsWithStdLib/purelyImplementedCollection/maps.fir.kt
T
simon.ogorodnik 34e6649d31 [FIR] Harden check of argument type properly
Before this commit, nullable argument could match not null parameter.
Now we require also correct nullability that breaks some cases
2020-02-03 16:45:18 +03:00

82 lines
2.2 KiB
Kotlin
Vendored

// !DIAGNOSTICS: -UNUSED_VARIABLE
// !WITH_NEW_INFERENCE
// FULL_JDK
import java.util.*
import java.util.concurrent.*
fun bar(): String? = null
val nullableInt: Int? = null
fun hashMapTest() {
var x: HashMap<String, Int> = HashMap<String, Int>()
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
x.put("", 1)
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = x
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = x
val b4: Map<String?, Int?> = x
val b5: Map<String, Int?> = x
val b6: Int = x[""]
val b7: Int = x.get("")
val b8: Int? = x.get("")
}
fun treeMapTest() {
var x: TreeMap<String, Int> = TreeMap<String, Int>()
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
x.put("", 1)
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = x
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = x
val b4: Map<String?, Int?> = x
val b5: Map<String, Int?> = x
val b6: Int = x[""]
val b7: Int = x.get("")
val b8: Int? = x.get("")
}
fun concurrentHashMapTest() {
var x: ConcurrentHashMap<String, Int> = ConcurrentHashMap<String, Int>()
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
x.put("", 1)
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = x
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = x
val b4: Map<String?, Int?> = x
val b5: Map<String, Int?> = x
val b6: Int = x[""]
val b7: Int = x.get("")
val b8: Int? = x.get("")
}