Smart completion: heuristic parameter types for some methods like Collection.contains()

This commit is contained in:
Valentin Kipyatkov
2015-01-20 12:43:10 +03:00
parent 3b6b9a45e2
commit 3c573d555a
21 changed files with 341 additions and 32 deletions
@@ -0,0 +1,7 @@
fun foo(list: List<String>, p1: Any, p2: String) {
list.contains(<caret>)
}
// ABSENT: p1
// EXIST: p2
// EXIST: { itemText: "String", tailText: "() (kotlin)" }
@@ -0,0 +1,6 @@
fun foo(list: List<String>, p1: Collection<Any>, p2: List<String>) {
list.containsAll(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,6 @@
fun foo(list: Map<String, Int>, p1: Any, p2: String) {
list.containsKey(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,6 @@
fun foo(list: Map<String, Int>, p1: Any, p2: Int) {
list.containsValue(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,6 @@
fun foo(list: Map<String, Int>, p1: Any, p2: String) {
list.get(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,24 @@
import java.util.ArrayList
trait A
trait B : A
trait C
fun foo(a: A, cA: Collection<A>, cB: Collection<B>, cC: Collection<C>, cAny: Collection<Any>,
lA: List<A>, lb: List<B>, lC: List<C>, lAny: List<Any>,
aA: ArrayList<A>, aB: ArrayList<B>, aC: ArrayList<C>, aAny: ArrayList<Any>) {
if (a in <caret>
}
// EXIST: cA
// ABSENT: cB
// ABSENT: cC
// EXIST: cAny
// EXIST: lA
// ABSENT: lB
// ABSENT: lC
// EXIST: lAny
// EXIST: aA
// ABSENT: aB
// ABSENT: aC
// EXIST: aAny
@@ -0,0 +1,7 @@
fun foo(list: List<String>, p1: Any, p2: String) {
list.indexOf(<caret>)
}
// ABSENT: p1
// EXIST: p2
// EXIST: { itemText: "String", tailText: "() (kotlin)" }
@@ -0,0 +1,7 @@
fun foo(list: List<String>, p1: Any, p2: String) {
list.lastIndexOf(<caret>)
}
// ABSENT: p1
// EXIST: p2
// EXIST: { itemText: "String", tailText: "() (kotlin)" }
@@ -0,0 +1,6 @@
fun foo(list: MutableMap<String, Int>, p1: Any, p2: String) {
list.remove(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,9 @@
import java.util.*
fun foo(list: ArrayList<String>, p1: Any, p2: String) {
list.remove(<caret>)
}
// ABSENT: p1
// EXIST: p2
// EXIST: { itemText: "String", tailText: "() (kotlin)" }
@@ -0,0 +1,8 @@
import java.util.*
fun foo(list: ArrayList<String>, p1: ArrayList<Any>, p2: ArrayList<String>) {
list.removeAll(<caret>)
}
// ABSENT: p1
// EXIST: p2
@@ -0,0 +1,8 @@
import java.util.*
fun foo(list: ArrayList<String>, p1: ArrayList<Any>, p2: ArrayList<String>) {
list.retainAll(<caret>)
}
// ABSENT: p1
// EXIST: p2