Completion to insert type arguments for a call when they are likely required

This commit is contained in:
Valentin Kipyatkov
2015-08-19 20:12:48 +03:00
parent 4743a69d76
commit 5fc6525db6
34 changed files with 372 additions and 80 deletions
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): String { }
fun f(list: List<Any>): String {
return list.<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): String { }
fun f(list: List<Any>): String {
return list.foo<<caret>>()
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.myFilterIsInstance(): Collection<T> { }
fun foo(list: List<Any>): String {
return list.<caret>
}
// ELEMENT: myFilterIsInstance
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.myFilterIsInstance(): Collection<T> { }
fun foo(list: List<Any>): String {
return list.myFilterIsInstance<<caret>>()
}
// ELEMENT: myFilterIsInstance
@@ -0,0 +1,8 @@
fun <T> foo(p : (T, Int) -> Boolean){}
fun main(args: Array<String>) {
fo<caret>
}
// ELEMENT: foo
// TAIL_TEXT: " { T, Int -> ... } (p: (T, Int) -> Boolean) (<root>)"
@@ -0,0 +1,8 @@
fun <T> foo(p : (T, Int) -> Boolean){}
fun main(args: Array<String>) {
foo { t, i -> <caret> }
}
// ELEMENT: foo
// TAIL_TEXT: " { T, Int -> ... } (p: (T, Int) -> Boolean) (<root>)"
@@ -0,0 +1,7 @@
fun <T1, T2> T1.foo(handler: (T2) -> Boolean) {}
fun f() {
"".<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
fun <T1, T2> T1.foo(handler: (T2) -> Boolean) {}
fun f() {
"".foo<<caret>> { }
}
// ELEMENT: foo
@@ -0,0 +1,5 @@
fun f(list: List<String>) {
list.<caret>
}
// ELEMENT: map
@@ -0,0 +1,5 @@
fun f(list: List<String>) {
list.map { <caret> }
}
// ELEMENT: map
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.myFirstIsInstance(): T { }
fun foo(list: List<Any>): String {
return list.<caret>
}
// ELEMENT: myFirstIsInstance
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.myFirstIsInstance(): T { }
fun foo(list: List<Any>): String {
return list.myFirstIsInstance()<caret>
}
// ELEMENT: myFirstIsInstance
@@ -0,0 +1,7 @@
fun <T1, reified T2> foo(t: T1): T1 {}
fun f() {
<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
fun <T1, reified T2> foo(t: T1): T1 {}
fun f() {
foo<<caret>>()
}
// ELEMENT: foo
@@ -0,0 +1,9 @@
inline fun <reified R> Iterable<*>.myFilterIsInstance(): List<R> {
return filterIsInstanceTo(ArrayList<R>())
}
fun foo(list: List<Any>) {
list.<caret>
}
// ELEMENT: myFilterIsInstance
@@ -0,0 +1,9 @@
inline fun <reified R> Iterable<*>.myFilterIsInstance(): List<R> {
return filterIsInstanceTo(ArrayList<R>())
}
fun foo(list: List<Any>) {
list.myFilterIsInstance<<caret>>()
}
// ELEMENT: myFilterIsInstance
@@ -0,0 +1,7 @@
fun <T1, T2> T1.foo(t: T2): T2 = t
fun foo() {
"".<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
fun <T1, T2> T1.foo(t: T2): T2 = t
fun foo() {
"".foo(<caret>)
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): List<T> { }
fun f(list: List<Any>): Collection<String> {
return list.<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): List<T> { }
fun f(list: List<Any>): Collection<String> {
return list.foo()<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): String { }
fun f(list: List<Any>): String {
return list.<caret>
}
// ELEMENT: foo
@@ -0,0 +1,7 @@
public inline fun <reified T> Iterable<*>.foo(): String { }
fun f(list: List<Any>): String {
return list.foo<<caret>>()
}
// ELEMENT: foo