Completion of lambda parameters

Also changed policy for sorting of smart completion items in basic completion

 #KT-16800 Fixed
 #KT-12002 Fixed
This commit is contained in:
Valentin Kipyatkov
2017-03-16 20:36:08 +03:00
parent c6b9aebfcf
commit b5dd2cc540
66 changed files with 558 additions and 256 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ fun bar(pInt: Int, pString: String) {
foo(param2 = , <caret>)
}
// EXIST: { lookupString: "param1", itemText: "param1 =" }
// EXIST: { lookupString: "param3", itemText: "param3 =" }
// EXIST: { lookupString: "param1 =", itemText: "param1 =" }
// EXIST: { lookupString: "param3 =", itemText: "param3 =" }
// ABSENT: param2
// NOTHING_ELSE
+2 -2
View File
@@ -4,7 +4,7 @@ fun bar(pInt: Int, pString: String) {
foo(param2 = 1, <caret>)
}
// EXIST: { lookupString: "param1", itemText: "param1 =" }
// EXIST: { lookupString: "param3", itemText: "param3 =" }
// EXIST: { lookupString: "param1 =", itemText: "param1 =" }
// EXIST: { lookupString: "param3 =", itemText: "param3 =" }
// ABSENT: param2
// NOTHING_ELSE
+3 -1
View File
@@ -4,5 +4,7 @@ fun bar() {
foo(<caret>)
}
// WITH_ORDER
// EXIST: "{...}"
// EXIST: "{ String -> ... }"
// EXIST: "{ s -> ... }"
// EXIST: "{ s: String -> ... }"
+3 -1
View File
@@ -4,5 +4,7 @@ fun bar() {
foo(<caret>)
}
// WITH_ORDER
// ABSENT: "{...}"
// EXIST: "{ String, Int -> ... }"
// EXIST: "{ s, i -> ... }"
// EXIST: "{ s: String, i: Int -> ... }"
+3 -1
View File
@@ -4,5 +4,7 @@ fun bar() {
foo(<caret>)
}
// WITH_ORDER
// EXIST: "{...}"
// EXIST: "{ Int -> ... }"
// EXIST: "{ i -> ... }"
// EXIST: "{ i: Int -> ... }"
@@ -0,0 +1,11 @@
fun foo(p: (String, Int) -> Unit){}
fun foo(p: (Char, xx: Any) -> Unit){}
fun bar() {
foo(<caret>)
}
// ABSENT: "{ s, i -> ... }"
// ABSENT: "{ c, xx -> ... }"
// EXIST: "{ String, Int -> ... }"
// EXIST: "{ Char, xx -> ... }"
@@ -1,8 +1,10 @@
fun foo(p: Int, handler: (String, Char) -> Unit){}
fun foo(p: Int, handler: (String, xx: Char) -> Unit){}
fun bar(handler: (String, Char) -> Unit) {
foo(1)<caret>
}
// EXIST: "{ String, Char -> ... }"
// WITH_ORDER
// EXIST: "{ s, xx -> ... }"
// EXIST: "{ s: String, xx: Char -> ... }"
// ABSENT: handler
@@ -5,5 +5,6 @@ fun bar(p: String.(Int) -> Unit) {
}
// EXIST: "{...}"
// EXIST: "{ Int -> ... }"
// EXIST: "{ i -> ... }"
// EXIST: "{ i: Int -> ... }"
// ABSENT: p
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
foo <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
"".foo <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
"" foo <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// EXIST: handler
@@ -4,6 +4,7 @@ fun bar(handler: (String, Char) -> Unit) {
foo(1)<caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: null
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
foo() <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
foo <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
foo() <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -4,5 +4,6 @@ fun bar(handler: (String, Char) -> Unit) {
foo(1, 2) <caret>
}
// EXIST: "{ String, Char -> ... }"
// EXIST: "{ s, c -> ... }"
// EXIST: "{ s: String, c: Char -> ... }"
// ABSENT: handler
@@ -0,0 +1,11 @@
fun foo(p: (String, Int) -> Unit){}
fun foo(p: (Char, xx: Any) -> Unit){}
fun bar() {
foo { <caret> }
}
// EXIST: "String, Int ->"
// EXIST: "Char, xx ->"
// ABSENT: "s, i ->"
// ABSENT: "c, xx ->"
@@ -0,0 +1,7 @@
fun foo(p: Int) {
"abc".fold(1) { <caret> }
}
// EXIST: p
// EXIST: "acc: Int, c: Char ->"
// EXIST: "acc, c ->"
@@ -0,0 +1,5 @@
fun foo(p: Int) {
"abc".fold(1) { acc, <caret> }
}
// NOTHING_ELSE
@@ -0,0 +1,7 @@
fun foo(p: Int) {
"abc".fold(1) { acc, c -> <caret> }
}
// EXIST: p
// ABSENT: "acc: Int, c: Char ->"
// ABSENT: "acc, c ->"
@@ -0,0 +1,7 @@
fun foo(p: Boolean) {
"abc".filter { <caret> }
}
// EXIST: p
// EXIST: "c ->"
// EXIST: "c: Char ->"