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:
@@ -3,4 +3,4 @@ fun small(param: Int) {
|
||||
|
||||
fun test() = small(<caret>)
|
||||
|
||||
// EXIST: {"lookupString":"param","tailText":" Int","itemText":"param ="}
|
||||
// EXIST: {"lookupString":"param =","tailText":" Int","itemText":"param ="}
|
||||
@@ -4,4 +4,4 @@ fun small(first: Int, second: Int) {
|
||||
fun test() = small(12, <caret>)
|
||||
|
||||
// ABSENT: first
|
||||
// EXIST: { lookupString:"second", itemText:"second =" }
|
||||
// EXIST: { lookupString:"second =", itemText:"second =" }
|
||||
|
||||
@@ -4,4 +4,4 @@ fun bar(s: String){
|
||||
foo("", "", <caret>)
|
||||
}
|
||||
|
||||
// EXIST: { lookupString:"option", itemText:"option =" }
|
||||
// EXIST: { lookupString:"option =", itemText:"option =" }
|
||||
|
||||
+2
-2
@@ -5,5 +5,5 @@ fun small(paramFirst: Sequence<String>, paramSecond: Comparable<kotlin.collectio
|
||||
|
||||
fun test() = small(<caret>)
|
||||
|
||||
// EXIST: {"lookupString":"paramSecond","tailText":" Comparable<List<Any>>","itemText":"paramSecond ="}
|
||||
// EXIST: {"lookupString":"paramFirst","tailText":" Sequence<String>","itemText":"paramFirst ="}
|
||||
// EXIST: {"lookupString":"paramSecond =","tailText":" Comparable<List<Any>>","itemText":"paramSecond ="}
|
||||
// EXIST: {"lookupString":"paramFirst =","tailText":" Sequence<String>","itemText":"paramFirst ="}
|
||||
|
||||
+2
-2
@@ -6,6 +6,6 @@ fun small(paramFirst: Int, paramSecond: Int) {
|
||||
fun test() = small(paramFirst = param<caret>)
|
||||
|
||||
// EXIST: paramTest
|
||||
// ABSENT: {"lookupString":"paramFirst","tailText":" Int","itemText":"paramFirst ="}
|
||||
// ABSENT: paramSecond
|
||||
// ABSENT: { itemText: "paramFirst =" }
|
||||
// ABSENT: { itemText: "paramSecond =" }
|
||||
// NOTHING_ELSE
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ fun other() {
|
||||
}
|
||||
|
||||
// EXIST: nLocal
|
||||
// EXIST: { lookupString:"nFirst", itemText:"nFirst =", tailText: " String" }
|
||||
// EXIST: { lookupString:"nFirst =", itemText:"nFirst =", tailText: " String" }
|
||||
// EXIST: { itemText: "nClassParam =", tailText: " String" }
|
||||
// EXIST: { itemText: "nClassField =", tailText: " String" }
|
||||
// EXIST: { itemText: "nSecond =", tailText: " String?" }
|
||||
|
||||
+4
-4
@@ -4,8 +4,8 @@ fun test() {
|
||||
foo("str", paramThird = "test", param<caret>)
|
||||
}
|
||||
|
||||
// ABSENT: paramFirst
|
||||
// EXIST: paramSecond
|
||||
// ABSENT: paramThird
|
||||
// EXIST: paramFourth
|
||||
// ABSENT: "paramFirst ="
|
||||
// EXIST: "paramSecond ="
|
||||
// ABSENT: "paramThird ="
|
||||
// EXIST: "paramFourth ="
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -5,7 +5,7 @@ fun test() {
|
||||
foo(12, param<caret>)
|
||||
}
|
||||
|
||||
// ABSENT: paramFirst
|
||||
// EXIST: {"lookupString":"paramSecond","tailText":" Int","itemText":"paramSecond ="}
|
||||
// ABSENT: paramThird
|
||||
// ABSENT: paramFourth
|
||||
// ABSENT: "paramFirst ="
|
||||
// EXIST: {"lookupString":"paramSecond =","tailText":" Int","itemText":"paramSecond ="}
|
||||
// ABSENT: "paramThird ="
|
||||
// ABSENT: "paramFourth ="
|
||||
+3
-3
@@ -4,6 +4,6 @@ fun foo(first: Int, second: Int, third: String) {
|
||||
fun test(p: Int) = foo(12, <caret>, third = "")
|
||||
|
||||
// EXIST: p
|
||||
// ABSENT: first
|
||||
// EXIST: third
|
||||
// EXIST: second
|
||||
// ABSENT: "first ="
|
||||
// EXIST: "third ="
|
||||
// EXIST: "second ="
|
||||
|
||||
+3
-3
@@ -4,6 +4,6 @@ fun foo(first: Int, second: Int, third: String) {
|
||||
fun test(p: Int) = foo(<caret>second = 3)
|
||||
|
||||
// EXIST: p
|
||||
// EXIST: first
|
||||
// EXIST: second
|
||||
// EXIST: third
|
||||
// EXIST: "first ="
|
||||
// EXIST: "second ="
|
||||
// EXIST: "third ="
|
||||
|
||||
@@ -6,5 +6,5 @@ fun other() {
|
||||
Foo(p<caret>)
|
||||
}
|
||||
|
||||
// EXIST: {"lookupString":"pFirst","tailText":" String?","itemText":"pFirst ="}
|
||||
// EXIST: {"lookupString":"pSecond","tailText":" Int","itemText":"pSecond ="}
|
||||
// EXIST: {"lookupString":"pFirst =","tailText":" String?","itemText":"pFirst ="}
|
||||
// EXIST: {"lookupString":"pSecond =","tailText":" Int","itemText":"pSecond ="}
|
||||
+3
-3
@@ -4,7 +4,7 @@ fun foo(first: Int, second: Int, third: String) {
|
||||
fun test(p: Int) = foo(12, third = "", <caret>)
|
||||
|
||||
// ABSENT: p
|
||||
// ABSENT: first
|
||||
// ABSENT: third
|
||||
// EXIST: second
|
||||
// ABSENT: "first ="
|
||||
// ABSENT: "third ="
|
||||
// EXIST: "second ="
|
||||
// NOTHING_ELSE
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ fun small(paramFirst: Int, paramSecond: Int) {
|
||||
|
||||
fun test() = small(param<caret>First = 12)
|
||||
|
||||
// EXIST: paramFirst
|
||||
// EXIST: paramSecond
|
||||
// EXIST: "paramFirst ="
|
||||
// EXIST: "paramSecond ="
|
||||
// EXIST: paramTest
|
||||
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -3,4 +3,4 @@ import lib.KotlinClass
|
||||
fun test() = KotlinClass().foo(<caret>)
|
||||
|
||||
// ABSENT: p0
|
||||
// EXIST: { lookupString:"paramName", itemText:"paramName =" }
|
||||
// EXIST: { lookupString:"paramName =", itemText:"paramName =" }
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ fun paramFun() {}
|
||||
|
||||
fun test() {
|
||||
// Type '=', completion should be finishied
|
||||
foo(paramTest = <caret>)
|
||||
foo(paramTest =<caret>)
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@ fun test() {
|
||||
foo(xxx = 10, <caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: yyy
|
||||
// ELEMENT: "yyy ="
|
||||
// CHAR: =
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
fun foo(xxx: Int, yyy: Int)
|
||||
|
||||
fun test() {
|
||||
foo(xxx = 10, yyy = <caret>)
|
||||
foo(xxx = 10, yyy =<caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: yyy
|
||||
// ELEMENT: "yyy ="
|
||||
// CHAR: =
|
||||
|
||||
@@ -4,5 +4,5 @@ fun test() {
|
||||
foo(xxx = 10, <caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: yyy
|
||||
// ELEMENT: "yyy ="
|
||||
// CHAR: ' '
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
fun foo(xxx: Int, yyy: Int)
|
||||
|
||||
fun test() {
|
||||
foo(xxx = 10, yyy = <caret>)
|
||||
foo(xxx = 10, yyy <caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: yyy
|
||||
// ELEMENT: "yyy ="
|
||||
// CHAR: ' '
|
||||
|
||||
@@ -4,4 +4,4 @@ fun bar() {
|
||||
foo(<caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: "{ Int -> ... }"
|
||||
// ELEMENT: "{ i -> ... }"
|
||||
|
||||
@@ -4,4 +4,4 @@ fun bar() {
|
||||
foo({ i -> <caret> })
|
||||
}
|
||||
|
||||
// ELEMENT: "{ Int -> ... }"
|
||||
// ELEMENT: "{ i -> ... }"
|
||||
|
||||
@@ -5,4 +5,4 @@ fun bar() {
|
||||
foo(<caret>)
|
||||
}
|
||||
|
||||
// ELEMENT: "{ String, StringBuilder -> ... }"
|
||||
// ELEMENT: "{ s, stringBuilder -> ... }"
|
||||
|
||||
@@ -5,4 +5,4 @@ fun bar() {
|
||||
foo({ s, stringBuilder -> <caret> })
|
||||
}
|
||||
|
||||
// ELEMENT: "{ String, StringBuilder -> ... }"
|
||||
// ELEMENT: "{ s, stringBuilder -> ... }"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,5 +4,7 @@ fun bar() {
|
||||
foo(<caret>)
|
||||
}
|
||||
|
||||
// WITH_ORDER
|
||||
// EXIST: "{...}"
|
||||
// EXIST: "{ String -> ... }"
|
||||
// EXIST: "{ s -> ... }"
|
||||
// EXIST: "{ s: String -> ... }"
|
||||
|
||||
@@ -4,5 +4,7 @@ fun bar() {
|
||||
foo(<caret>)
|
||||
}
|
||||
|
||||
// WITH_ORDER
|
||||
// ABSENT: "{...}"
|
||||
// EXIST: "{ String, Int -> ... }"
|
||||
// EXIST: "{ s, i -> ... }"
|
||||
// EXIST: "{ s: String, i: Int -> ... }"
|
||||
|
||||
@@ -4,5 +4,7 @@ fun bar() {
|
||||
foo(<caret>)
|
||||
}
|
||||
|
||||
// WITH_ORDER
|
||||
// EXIST: "{...}"
|
||||
// EXIST: "{ Int -> ... }"
|
||||
// EXIST: "{ i -> ... }"
|
||||
// EXIST: "{ i: Int -> ... }"
|
||||
|
||||
+11
@@ -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 -> ... }"
|
||||
+4
-2
@@ -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
|
||||
+2
-1
@@ -5,5 +5,6 @@ fun bar(p: String.(Int) -> Unit) {
|
||||
}
|
||||
|
||||
// EXIST: "{...}"
|
||||
// EXIST: "{ Int -> ... }"
|
||||
// EXIST: "{ i -> ... }"
|
||||
// EXIST: "{ i: Int -> ... }"
|
||||
// ABSENT: p
|
||||
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+2
-1
@@ -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
|
||||
+11
@@ -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 ->"
|
||||
@@ -0,0 +1,8 @@
|
||||
fun <R> String.fold(initial: R, operation: (acc: R, Char) -> R): R = TODO()
|
||||
|
||||
fun foo(p: Int) {
|
||||
"abc".fold(1) { <caret> }
|
||||
}
|
||||
|
||||
// ORDER: "acc, c ->"
|
||||
// ORDER: "acc: Int, c: Char ->"
|
||||
@@ -20,6 +20,6 @@ fun test(listParam: Int) {
|
||||
// ORDER: listImportedVal
|
||||
// ORDER: listThisFileFun
|
||||
// ORDER: listImportedFun
|
||||
// ORDER: listMatch
|
||||
// ORDER: listNew
|
||||
// ORDER: "listMatch ="
|
||||
// ORDER: "listNew ="
|
||||
// ORDER: listFunNotMatchingType
|
||||
|
||||
@@ -6,6 +6,6 @@ fun test(tri: Boolean, trb: Int) {
|
||||
|
||||
// ORDER: true
|
||||
// ORDER: tri
|
||||
// ORDER: tra
|
||||
// ORDER: "tra ="
|
||||
// ORDER: trb
|
||||
// ORDER: try
|
||||
|
||||
@@ -11,5 +11,5 @@ fun test(insa: Any) {
|
||||
}
|
||||
|
||||
// ORDER: instance
|
||||
// ORDER: insp
|
||||
// ORDER: "insp ="
|
||||
// ORDER: insa
|
||||
|
||||
@@ -8,5 +8,5 @@ fun bar(b: I2, a: I1, c: I1) {
|
||||
}
|
||||
|
||||
// ORDER: a
|
||||
// ORDER: c
|
||||
// ORDER: "a, b, c"
|
||||
// ORDER: c
|
||||
|
||||
+2
-1
@@ -8,5 +8,6 @@ fun f() {
|
||||
}
|
||||
|
||||
// ORDER: {...}
|
||||
// ORDER: { Int -> ... }
|
||||
// ORDER: { i -> ... }
|
||||
// ORDER: { i: Int -> ... }
|
||||
// ORDER: ::fff2
|
||||
|
||||
@@ -10,7 +10,8 @@ fun bar(p: (String) -> Boolean) {
|
||||
// ORDER: ::doFilter
|
||||
// ORDER: p
|
||||
// ORDER: {...}
|
||||
// ORDER: { String -> ... }
|
||||
// ORDER: { s -> ... }
|
||||
// ORDER: { s: String -> ... }
|
||||
// ORDER: ::x
|
||||
// ORDER: ::TODO
|
||||
// ORDER: ::error
|
||||
|
||||
Reference in New Issue
Block a user