Smart completion: support for overloaded method calls

This commit is contained in:
Valentin Kipyatkov
2014-03-27 15:21:57 +04:00
parent 15364ceae6
commit 50bb90a1e3
13 changed files with 279 additions and 38 deletions
@@ -0,0 +1,9 @@
import java.io.File
fun f(p1: Any, p2: String, p3: File) {
File(<caret>)
}
// ABSENT: p1
// EXIST: p2
// EXIST: p3
@@ -0,0 +1,18 @@
val s = ""
val i = 123
fun f(p1: Any, p2: String, p3: Int) {
foo(<caret>123) // this call is resolved to Foo(Int) but types from all signatures should participate
}
fun foo(p1: String, p2: Any) {
}
fun foo(p1: Int) {
}
// ABSENT: p1
// EXIST: p2
// EXIST: p3
// EXIST: s
// EXIST: i
@@ -0,0 +1,23 @@
val s = ""
val i = 123
fun f(p1: Any, p2: String, p3: Int, p4: Char) {
foo(<caret>abc)
}
fun foo(p1: String, p2: Any) {
}
fun foo(p1: Int) {
}
// add this signature so that call above is not resolved
fun foo(p1: Char) {
}
// ABSENT: p1
// EXIST: p2
// EXIST: p3
// EXIST: p4
// EXIST: s
// EXIST: i
@@ -0,0 +1,13 @@
fun f(p1: Any, p2: String, p3: Int) {
foo("abc", <caret>)
}
fun foo(p1: String, p2: String) {
}
fun foo(p1: Int, p2: Int) {
}
// ABSENT: p1
// EXIST: p2
// ABSENT: p3
@@ -0,0 +1,24 @@
val s = ""
val i = 123
fun f(p1: Any, p2: String, p3: Int, p4: Char) {
C().foo(<caret>abc)
}
class C {
fun foo(p1: String, p2: Any) {
}
fun foo(p1: Int) {
}
fun foo(p1: Char) {
}
}
// ABSENT: p1
// EXIST: p2
// EXIST: p3
// EXIST: p4
// EXIST: s
// EXIST: i
@@ -0,0 +1,24 @@
val s = ""
val i = 123
fun f(c: C?, p1: Any, p2: String, p3: Int, p4: Char) {
c?.foo(<caret>abc)
}
class C {
fun foo(p1: String, p2: Any) {
}
fun foo(p1: Int) {
}
fun foo(p1: Char) {
}
}
// ABSENT: p1
// EXIST: p2
// EXIST: p3
// EXIST: p4
// EXIST: s
// EXIST: i