[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
This commit is contained in:
committed by
Mikhail Glukhikh
parent
fe779bf7bd
commit
34e6649d31
+4
-4
@@ -6,12 +6,12 @@ fun bar(): String? = null
|
||||
|
||||
fun foo() {
|
||||
var x = ArrayList<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
x[0] = null
|
||||
x[0] = bar()
|
||||
<!INAPPLICABLE_CANDIDATE!>x[0] = null<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[0] = bar()<!>
|
||||
x[0] = ""
|
||||
|
||||
val b1: MutableList<String?> = x
|
||||
|
||||
+2
-2
@@ -24,8 +24,8 @@ fun bar(): String? = null
|
||||
|
||||
fun foo() {
|
||||
var x = A<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
val b1: Collection<String?> = x
|
||||
|
||||
+4
-4
@@ -24,12 +24,12 @@ fun bar(): String? = null
|
||||
|
||||
fun foo() {
|
||||
var x = A<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
x[0] = null
|
||||
x[0] = bar()
|
||||
<!INAPPLICABLE_CANDIDATE!>x[0] = null<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[0] = bar()<!>
|
||||
x[0] = ""
|
||||
|
||||
val b1: MutableList<String?> = x
|
||||
|
||||
+18
-18
@@ -10,14 +10,14 @@ val nullableInt: Int? = null
|
||||
|
||||
fun hashMapTest() {
|
||||
var x: HashMap<String, Int> = HashMap<String, Int>()
|
||||
x.put(null, null)
|
||||
x.put("", null)
|
||||
x.put(bar(), 1)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
x[""] = nullableInt
|
||||
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
|
||||
x[""] = 1
|
||||
|
||||
val b1: MutableMap<String, Int?> = x
|
||||
@@ -34,14 +34,14 @@ fun hashMapTest() {
|
||||
|
||||
fun treeMapTest() {
|
||||
var x: TreeMap<String, Int> = TreeMap<String, Int>()
|
||||
x.put(null, null)
|
||||
x.put("", null)
|
||||
x.put(bar(), 1)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
x[""] = nullableInt
|
||||
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
|
||||
x[""] = 1
|
||||
|
||||
val b1: MutableMap<String, Int?> = x
|
||||
@@ -58,14 +58,14 @@ fun treeMapTest() {
|
||||
|
||||
fun concurrentHashMapTest() {
|
||||
var x: ConcurrentHashMap<String, Int> = ConcurrentHashMap<String, Int>()
|
||||
x.put(null, null)
|
||||
x.put("", null)
|
||||
x.put(bar(), 1)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
x[""] = nullableInt
|
||||
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
|
||||
x[""] = 1
|
||||
|
||||
val b1: MutableMap<String, Int?> = x
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/purelyImplementedCollection/mapsWithNullableKey.fir.kt
Vendored
+6
-6
@@ -9,14 +9,14 @@ val nullableInt: Int? = null
|
||||
|
||||
fun hashMapTest() {
|
||||
var x: HashMap<String?, Int> = HashMap<String?, Int>()
|
||||
x.put(null, null)
|
||||
x.put("", null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
|
||||
x.put(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
x[""] = nullableInt
|
||||
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
|
||||
x[""] = 1
|
||||
|
||||
val b1: MutableMap<String?, Int?> = x
|
||||
@@ -34,14 +34,14 @@ fun hashMapTest() {
|
||||
|
||||
fun treeMapTest() {
|
||||
var x: TreeMap<String?, Int> = TreeMap<String?, Int>()
|
||||
x.put(null, null)
|
||||
x.put("", null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>("", null)
|
||||
x.put(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
x[""] = nullableInt
|
||||
<!INAPPLICABLE_CANDIDATE!>x[""] = nullableInt<!>
|
||||
x[""] = 1
|
||||
|
||||
val b1: MutableMap<String?, Int?> = x
|
||||
|
||||
+8
-8
@@ -9,13 +9,13 @@ val nullableInt: Int? = null
|
||||
|
||||
fun hashMapTest() {
|
||||
var x: HashMap<String, Int?> = HashMap<String, Int?>()
|
||||
x.put(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.put("", null)
|
||||
x.put(bar(), 1)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
|
||||
x[""] = nullableInt
|
||||
x[""] = 1
|
||||
|
||||
@@ -33,13 +33,13 @@ fun hashMapTest() {
|
||||
|
||||
fun treeMapTest() {
|
||||
var x: TreeMap<String, Int?> = TreeMap<String, Int?>()
|
||||
x.put(null, null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(null, null)
|
||||
x.put("", null)
|
||||
x.put(bar(), 1)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>put<!>(bar(), 1)
|
||||
x.put("", 1)
|
||||
|
||||
x[null] = 1
|
||||
x[bar()] = 1
|
||||
<!INAPPLICABLE_CANDIDATE!>x[null] = 1<!>
|
||||
<!INAPPLICABLE_CANDIDATE!>x[bar()] = 1<!>
|
||||
x[""] = nullableInt
|
||||
x[""] = 1
|
||||
|
||||
|
||||
+6
-6
@@ -8,8 +8,8 @@ fun bar(): String? = null
|
||||
|
||||
fun fooHashSet() {
|
||||
var x = HashSet<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
val b1: MutableSet<String?> = x
|
||||
@@ -22,8 +22,8 @@ fun fooHashSet() {
|
||||
|
||||
fun fooTreeSet() {
|
||||
var x = TreeSet<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
val b1: MutableSet<String?> = x
|
||||
@@ -36,8 +36,8 @@ fun fooTreeSet() {
|
||||
|
||||
fun fooLinkedHashSet() {
|
||||
var x = LinkedHashSet<String>()
|
||||
x.add(null)
|
||||
x.add(bar())
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(null)
|
||||
x.<!INAPPLICABLE_CANDIDATE!>add<!>(bar())
|
||||
x.add("")
|
||||
|
||||
val b1: MutableSet<String?> = x
|
||||
|
||||
Reference in New Issue
Block a user