Smart completion: argument with "*" is not necessary the only one for vararg parameter

This commit is contained in:
Valentin Kipyatkov
2015-06-04 23:05:01 +03:00
parent 0d992ee38f
commit 8243d27fb2
8 changed files with 18 additions and 19 deletions
@@ -218,9 +218,7 @@ class ExpectedInfos(
expectedInfos.add(ArgumentExpectedInfo(varargElementType, expectedName?.unpluralize(), varargTail, descriptor, argumentPosition))
}
if (argumentIndex == parameters.indexOf(parameter)) {
expectedInfos.add(ArgumentExpectedInfo(parameter.getType(), expectedName, varargTail, descriptor, argumentPosition, starOptions))
}
expectedInfos.add(ArgumentExpectedInfo(parameter.getType(), expectedName, varargTail, descriptor, argumentPosition, starOptions))
}
else {
if (!alreadyHasStar) {
@@ -1,7 +1,7 @@
fun foo(vararg v: Int, s: String) { }
fun bar(s: String) {
fun bar(i: Int) {
foo(*intArrayOf(), <caret>)
}
// ELEMENT: s
// ELEMENT: i
@@ -1,7 +1,7 @@
fun foo(vararg v: Int, s: String) { }
fun bar(s: String) {
foo(*intArrayOf(), s)<caret>
fun bar(i: Int) {
foo(*intArrayOf(), i, <caret>)
}
// ELEMENT: s
// ELEMENT: i
@@ -1,7 +1,7 @@
fun foo(vararg v1: Int, vararg v2: Char, s: String) { }
fun bar(c: Char) {
fun bar(i: Int) {
foo(*intArrayOf(), <caret>)
}
// ELEMENT: c
// ELEMENT: i
@@ -1,7 +1,7 @@
fun foo(vararg v1: Int, vararg v2: Char, s: String) { }
fun bar(c: Char) {
foo(*intArrayOf(), c, <caret>)
fun bar(i: Int) {
foo(*intArrayOf(), i, <caret>)
}
// ELEMENT: c
// ELEMENT: i
+2 -2
View File
@@ -5,5 +5,5 @@ fun bar(s: String, arr: Array<String>){
}
// EXIST: s
// ABSENT: arr
// ABSENT: *arr
// ABSENT: { itemText: "arr" }
// EXIST: { lookupString: "arr", itemText: "*arr" }
+4 -3
View File
@@ -4,6 +4,7 @@ fun bar(c: Char, pInt: Int) {
foo(*intArrayOf(), <caret>)
}
// EXIST: c
// ABSENT: pInt
// EXIST: { lookupString: "charArrayOf", itemText: "*charArrayOf" }
// ABSENT: c
// ABSENT: { lookupString: "charArrayOf", itemText: "*charArrayOf" }
// EXIST: pInt
// EXIST: { lookupString: "intArrayOf", itemText: "*intArrayOf" }
@@ -54,7 +54,7 @@ public fun Call.mapArgumentsToParameters(targetDescriptor: CallableDescriptor):
val parameter = parameters[positionalArgumentIndex]
map[argument] = parameter
if (parameter.getVarargElementType() == null || argument.getSpreadElement() != null) {
if (parameter.getVarargElementType() == null) {
positionalArgumentIndex++
}
}