[FIR] Implement replacing Object with type parameters for specials builtins

#KT-42601 Fixed
This commit is contained in:
Mikhail Glukhikh
2020-10-12 12:45:03 +03:00
parent d40248cb53
commit d3e85dbce0
19 changed files with 410 additions and 27 deletions
@@ -2,7 +2,7 @@ import java.util.*
fun foo() {
val al = ArrayList<String>()
al.size
al.contains(1)
al.<!INAPPLICABLE_CANDIDATE!>contains<!>(1)
al.contains("")
al.remove("")
@@ -10,7 +10,7 @@ fun foo() {
val hs = HashSet<String>()
hs.size
hs.contains(1)
hs.<!INAPPLICABLE_CANDIDATE!>contains<!>(1)
hs.contains("")
hs.remove("")
@@ -18,10 +18,10 @@ fun foo() {
val hm = HashMap<String, Int>()
hm.size
hm.containsKey(1)
hm.<!INAPPLICABLE_CANDIDATE!>containsKey<!>(1)
hm.containsKey("")
hm[1]
<!INAPPLICABLE_CANDIDATE!>hm[1]<!>
hm[""]
hm.remove("")
@@ -35,9 +35,9 @@ fun foo(
al: java.util.ArrayList<String>
) {
a.contains("")
a.contains(1)
a.<!INAPPLICABLE_CANDIDATE!>contains<!>(1)
"" in a
1 in a
1 <!INAPPLICABLE_CANDIDATE!>in<!> a
b.contains("")
b.contains(1)
@@ -50,9 +50,9 @@ fun foo(
1 in ic
ka.contains("")
ka.contains(1)
ka.<!INAPPLICABLE_CANDIDATE!>contains<!>(1)
"" in ka
1 in ka
1 <!INAPPLICABLE_CANDIDATE!>in<!> ka
kb.contains("")
kb.contains(1)
@@ -60,7 +60,7 @@ fun foo(
1 in kb
al.contains("")
al.contains(1)
al.<!INAPPLICABLE_CANDIDATE!>contains<!>(1)
"" in al
1 in al
1 <!INAPPLICABLE_CANDIDATE!>in<!> al
}
@@ -8,9 +8,9 @@ val concurrentHash: ConcurrentHashMap<String, Int> = null!!
fun foo() {
concurrent.remove("", 1)
concurrent.remove("", "")
concurrent.<!INAPPLICABLE_CANDIDATE!>remove<!>("", "")
concurrentHash.remove("", 1)
concurrentHash.remove("", "")
concurrentHash.<!INAPPLICABLE_CANDIDATE!>remove<!>("", "")
// Flexible types
concurrent.remove(null, 1)
@@ -4,17 +4,17 @@ 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("", "")
x.<!NONE_APPLICABLE!>getOrDefault<!>("", "")
x.<!NONE_APPLICABLE!>getOrDefault<!>(1, 2)
x.<!NONE_APPLICABLE!>getOrDefault<!>("", 2)
a.getOrDefault(1, "")
a.getOrDefault("", "")
a.<!NONE_APPLICABLE!>getOrDefault<!>("", "")
a.<!NONE_APPLICABLE!>getOrDefault<!>(1, 2)
a.<!NONE_APPLICABLE!>getOrDefault<!>("", 2)
b.getOrDefault(1, "")
b.getOrDefault("", "")
b.<!INAPPLICABLE_CANDIDATE!>getOrDefault<!>("", "")
b.<!INAPPLICABLE_CANDIDATE!>getOrDefault<!>(1, 2)
b.<!INAPPLICABLE_CANDIDATE!>getOrDefault<!>("", 2)
}
@@ -22,7 +22,7 @@ fun foo(x: MutableMap<String, Int>, y: java.util.HashMap<String, Int>, z: java.u
x.<!INAPPLICABLE_CANDIDATE!>remove<!>("", null)
y.remove("", 1)
y.remove("", "")
y.<!INAPPLICABLE_CANDIDATE!>remove<!>("", "")
y.remove("", null)
z.remove("", 1)