Smart completion: "::functionName" items when value of function type is expected

This commit is contained in:
Valentin Kipyatkov
2014-04-11 22:07:39 +04:00
parent 7d5b86e000
commit 6b1ecc3fb0
16 changed files with 252 additions and 24 deletions
@@ -0,0 +1,9 @@
fun foo(p: () -> Unit){}
fun bar() {
foo(<caret>)
}
fun f(){}
// ELEMENT: ::f
@@ -0,0 +1,9 @@
fun foo(p: () -> Unit){}
fun bar() {
foo(::f)<caret>
}
fun f(){}
// ELEMENT: ::f
@@ -0,0 +1,9 @@
fun foo(){}
class C{}
val v: Any = <caret>
// ABSENT: ::foo
// ABSENT: ::C
// ABSENT: ::Runnable
@@ -0,0 +1,14 @@
fun foo(p: () -> Unit){}
fun bar() {
foo(<caret>)
}
fun f1(){}
fun f2(i: Int){}
// EXIST: { lookupString:"::f1", itemText:"::f1", tailText:"", typeText:"" }
// ABSENT: ::f2
// ABSENT: ::Unit
// ABSENT: ::Nothing
// ABSENT: { lookupString:"object" }
@@ -0,0 +1,10 @@
fun foo(p: () -> Unit){}
fun bar() {
foo(<caret>)
}
fun f(){}
fun f(i: Int){}
// ABSENT: ::f
@@ -0,0 +1,11 @@
fun foo(p: () -> Unit)){}
fun foo(p: () -> (() -> Unit)){}
fun bar() {
foo(<caret>)
}
fun f(): () -> Unit {}
// EXIST: ::f
// EXIST: f
@@ -0,0 +1,11 @@
fun foo(p: (() -> Unit)?){}
fun bar() {
foo(<caret>)
}
fun f1(){}
fun f2(i: Int){}
// EXIST: ::f1
// ABSENT: ::f2
@@ -0,0 +1,9 @@
class C(i: Int){}
fun foo(p: (Int) -> C){}
fun bar(){
foo(<caret>)
}
// EXIST: ::C
@@ -0,0 +1,7 @@
fun foo(p: (() -> Unit) -> Runnable){}
fun bar(){
foo(<caret>)
}
// EXIST: ::Runnable
@@ -0,0 +1,9 @@
import java.util.Date
fun foo(p: (Long) -> Date){}
fun bar(){
foo(<caret>)
}
// ABSENT: ::Date
@@ -0,0 +1,11 @@
fun foo(p: String.() -> Unit){}
fun bar() {
foo(<caret>)
}
fun String.f1(){}
fun f2(){}
// EXIST: ::f1
// ABSENT: ::f2
@@ -0,0 +1,9 @@
abstract class C(i: Int){}
fun foo(p: (Int) -> C){}
fun bar(){
foo(<caret>)
}
// ABSENT: ::C