Quick fix for applying spread operator where vararg is expected #KT-6824 Fixed

This commit is contained in:
shiraji
2016-12-27 01:35:18 +09:00
committed by Mikhail Glukhikh
parent 6ae4b42164
commit 44e69d8adc
15 changed files with 201 additions and 7 deletions
@@ -0,0 +1,10 @@
// "Change 'y' to '*y'" "false"
// ACTION: Add 'toString()' call
// ACTION: Change parameter 'x' type of function 'foo' to 'Array<Int>'
// ACTION: Convert to block body
// ACTION: Create function 'foo'
// DISABLE-ERRORS
fun foo(vararg x: String) {}
fun bar(y: Array<Int>) = foo(y<caret>)
@@ -0,0 +1,8 @@
// "Change 'pairs' to '*pairs'" "true"
// WITH_RUNTIME
fun <K, V> yourMapOf(vararg pairs: Pair<K, V>) {}
fun myMapOf(vararg pairs: Pair<String,String>) {
val myMap = yourMapOf(<caret>pairs)
}
@@ -0,0 +1,8 @@
// "Change 'pairs' to '*pairs'" "true"
// WITH_RUNTIME
fun <K, V> yourMapOf(vararg pairs: Pair<K, V>) {}
fun myMapOf(vararg pairs: Pair<String,String>) {
val myMap = yourMapOf(*pairs)
}
@@ -0,0 +1,11 @@
// "Change 'pairs' to '*pairs'" "false"
// WITH_RUNTIME
// ACTION: Create function 'mapOf'
// ERROR: Type inference failed: fun <K, V> mapOf(pair: Pair<K, V>): Map<K, V><br>cannot be applied to<br>(Array<out Pair<String, String>>)<br>
// ERROR: Type mismatch: inferred type is Array<out Pair<String, String>> but Pair<???, ???> was expected
fun myMapOf(vararg pairs: Pair<String,String>) {
// Does not work due to KT-15593
val myMap = mapOf(<caret>pairs)
}
@@ -0,0 +1,5 @@
// "Change 'array' to '*array'" "true"
fun foo(a: String, vararg x: String, b: Int) {}
fun bar(array: Array<String>) = foo("aaa", array<caret>, b = 1)
@@ -0,0 +1,5 @@
// "Change 'array' to '*array'" "true"
fun foo(a: String, vararg x: String, b: Int) {}
fun bar(array: Array<String>) = foo("aaa", *array, b = 1)
@@ -0,0 +1,12 @@
// "Change 'y' to '*y'" "false"
// ACTION: Add 'toString()' call
// ACTION: Change parameter 'x' type of function 'foo' to 'List<String>'
// ACTION: Convert to block body
// ACTION: Create function 'foo'
// DISABLE-ERRORS
// Fix this test case if https://youtrack.jetbrains.com/issue/KT-12663 is implemented
fun foo(vararg x: String) {}
fun bar(y: List<String>) = foo(y<caret>)
@@ -0,0 +1,10 @@
// "Change 'y' to '*y'" "false"
// ACTION: Add 'toString()' call
// ACTION: Change parameter 'x' type of function 'foo' to 'Array<String>'
// ACTION: Convert to block body
// ACTION: Create function 'foo'
// ERROR: Type mismatch: inferred type is Array<String> but String was expected
fun foo(x: String) {}
fun bar(y: Array<String>) = foo(y<caret>)
@@ -0,0 +1,5 @@
// "Change 'y' to '*y'" "true"
fun foo(vararg x: String) {}
fun bar(y: Array<String>) = foo(y<caret>)
@@ -0,0 +1,5 @@
// "Change 'y' to '*y'" "true"
fun foo(vararg x: String) {}
fun bar(y: Array<String>) = foo(*y)
@@ -0,0 +1,5 @@
// "Change 'y' to '*y'" "true"
fun foo(vararg x: String) {}
fun bar(vararg y: String) = foo(y<caret>)
@@ -0,0 +1,5 @@
// "Change 'y' to '*y'" "true"
fun foo(vararg x: String) {}
fun bar(vararg y: String) = foo(*y)