diff --git a/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/after.kt.template
new file mode 100644
index 00000000000..3995ce82206
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/after.kt.template
@@ -0,0 +1 @@
+fun foo(vararg a: String): Int = a.size
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/before.kt.template
new file mode 100644
index 00000000000..1fe324bc2a2
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/before.kt.template
@@ -0,0 +1 @@
+fun foo(a: Array): Int = a.size
diff --git a/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/description.html b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/description.html
new file mode 100644
index 00000000000..bc56ce42539
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertArrayParameterToVarargIntention/description.html
@@ -0,0 +1,5 @@
+
+
+This intention converts an array parameter to a vararg parameter.
+
+
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/after.kt.template
new file mode 100644
index 00000000000..1fe324bc2a2
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/after.kt.template
@@ -0,0 +1 @@
+fun foo(a: Array): Int = a.size
diff --git a/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/before.kt.template
new file mode 100644
index 00000000000..3995ce82206
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/before.kt.template
@@ -0,0 +1 @@
+fun foo(vararg a: String): Int = a.size
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/description.html b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/description.html
new file mode 100644
index 00000000000..84d93a987be
--- /dev/null
+++ b/idea/resources/intentionDescriptions/ConvertVarargParameterToArrayIntention/description.html
@@ -0,0 +1,5 @@
+
+
+This intention converts a vararg parameter to an array parameter.
+
+
\ No newline at end of file
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 59b8eeb5dd4..584c2a26cf3 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -1601,6 +1601,16 @@
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
Kotlin
+
+ org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
+ Kotlin
+
+
+
+ org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
+ Kotlin
+
+
(
+ KtParameter::class.java, "Convert to vararg parameter"
+) {
+
+ override fun isApplicableTo(element: KtParameter, caretOffset: Int): Boolean {
+ val typeReference = element.getChildOfType() ?: return false
+ if (element.parent.parent is KtFunctionLiteral) return false
+ if (element.isVarArg) return false
+
+ val type = element.descriptor?.type ?: return false
+ return when {
+ KotlinBuiltIns.isPrimitiveArray(type) -> {
+ text = "Convert to vararg parameter"
+ true
+ }
+ KotlinBuiltIns.isArray(type) -> {
+ val typeArgument = typeReference.typeElement?.typeArgumentsAsTypes?.firstOrNull()
+ val typeProjection = typeArgument?.parent as? KtTypeProjection
+ if (typeProjection?.hasModifier(KtTokens.IN_KEYWORD) == false) {
+ text = if (!typeProjection.hasModifier(KtTokens.OUT_KEYWORD)
+ && !KotlinBuiltIns.isPrimitiveType(element.builtIns.getArrayElementType(type))
+ ) {
+ "Convert to vararg parameter (may break code)"
+ } else {
+ "Convert to vararg parameter"
+ }
+ true
+ } else {
+ false
+ }
+ }
+ else ->
+ false
+ }
+ }
+
+ override fun applyTo(element: KtParameter, editor: Editor?) {
+ val typeReference = element.getChildOfType() ?: return
+ val type = element.descriptor?.type ?: return
+ val newType = KotlinBuiltIns.getPrimitiveArrayElementType(type)?.typeName?.asString()
+ ?: typeReference.typeElement?.typeArgumentsAsTypes?.firstOrNull()?.text
+ ?: return
+ typeReference.replace(KtPsiFactory(element).createType(newType))
+ element.addModifier(KtTokens.VARARG_KEYWORD)
+ }
+
+}
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertVarargParameterToArrayIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertVarargParameterToArrayIntention.kt
new file mode 100644
index 00000000000..5bc20a74464
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertVarargParameterToArrayIntention.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.idea.intentions
+
+import com.intellij.openapi.editor.Editor
+import org.jetbrains.kotlin.builtins.KotlinBuiltIns
+import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
+import org.jetbrains.kotlin.lexer.KtTokens
+import org.jetbrains.kotlin.psi.KtParameter
+import org.jetbrains.kotlin.psi.KtPsiFactory
+import org.jetbrains.kotlin.psi.KtTypeReference
+import org.jetbrains.kotlin.psi.psiUtil.getChildOfType
+
+class ConvertVarargParameterToArrayIntention : SelfTargetingIntention(
+ KtParameter::class.java, "Convert to array parameter"
+) {
+
+ override fun isApplicableTo(element: KtParameter, caretOffset: Int): Boolean {
+ if (element.getChildOfType() == null) return false
+ return element.isVarArg
+ }
+
+ override fun applyTo(element: KtParameter, editor: Editor?) {
+ val typeReference = element.getChildOfType() ?: return
+ val type = element.descriptor?.type ?: return
+ val newType = if (KotlinBuiltIns.isPrimitiveArray(type)) type.toString() else "Array<${typeReference.text}>"
+
+ typeReference.replace(KtPsiFactory(element).createType(newType))
+ element.removeModifier(KtTokens.VARARG_KEYWORD)
+ }
+
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/.intention b/idea/testData/intentions/convertArrayParameterToVararg/.intention
new file mode 100644
index 00000000000..bc410a90dc5
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/.intention
@@ -0,0 +1 @@
+org.jetbrains.kotlin.idea.intentions.ConvertArrayParameterToVarargIntention
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt b/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt
new file mode 100644
index 00000000000..c9e7c50b189
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt
@@ -0,0 +1 @@
+fun test(a: Array) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt.after
new file mode 100644
index 00000000000..b7dbb885c2c
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt.after
@@ -0,0 +1 @@
+fun test(vararg a: T) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt b/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt
new file mode 100644
index 00000000000..05e3f32c6a5
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt
@@ -0,0 +1,4 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(a: Array) {
+ a[0] = 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt.after
new file mode 100644
index 00000000000..b3e2eec1dfa
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt.after
@@ -0,0 +1,4 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(vararg a: Int) {
+ a[0] = 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt b/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt
new file mode 100644
index 00000000000..18f35182565
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt
@@ -0,0 +1,5 @@
+// INTENTION_TEXT: Convert to vararg parameter (may break code)
+// DISABLE-ERRORS
+fun test(a: Array) {
+ a[0] = ""
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt.after
new file mode 100644
index 00000000000..9b389f37590
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt.after
@@ -0,0 +1,5 @@
+// INTENTION_TEXT: Convert to vararg parameter (may break code)
+// DISABLE-ERRORS
+fun test(vararg a: String) {
+ a[0] = ""
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt b/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt
new file mode 100644
index 00000000000..4ea0116683a
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt
@@ -0,0 +1,3 @@
+class Test(private val a: Array) {
+ val size = a.size
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt.after
new file mode 100644
index 00000000000..1ac064b96f0
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt.after
@@ -0,0 +1,3 @@
+class Test(private vararg val a: String) {
+ val size = a.size
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/inLambda.kt b/idea/testData/intentions/convertArrayParameterToVararg/inLambda.kt
new file mode 100644
index 00000000000..5075ecea6fb
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/inLambda.kt
@@ -0,0 +1,7 @@
+// IS_APPLICABLE: false
+// WITH_RUNTIME
+fun test() {
+ listOf(arrayOf(1)).map { i: Array ->
+ i + 1
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt b/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt
new file mode 100644
index 00000000000..f47be02c0a2
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt
@@ -0,0 +1,4 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(a: IntArray) {
+ a[0] = 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt.after
new file mode 100644
index 00000000000..b3e2eec1dfa
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/intArray.kt.after
@@ -0,0 +1,4 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(vararg a: Int) {
+ a[0] = 1
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt b/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt
new file mode 100644
index 00000000000..5fb579ec044
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt
@@ -0,0 +1 @@
+fun test(a: LongArray) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt.after
new file mode 100644
index 00000000000..60215c2594e
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/longArray.kt.after
@@ -0,0 +1 @@
+fun test(vararg a: Long) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/starProjection.kt b/idea/testData/intentions/convertArrayParameterToVararg/starProjection.kt
new file mode 100644
index 00000000000..9284d49d0fe
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/starProjection.kt
@@ -0,0 +1,2 @@
+// IS_APPLICABLE: false
+fun test(a: Array<*>) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/vararg.kt b/idea/testData/intentions/convertArrayParameterToVararg/vararg.kt
new file mode 100644
index 00000000000..ac31759b337
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/vararg.kt
@@ -0,0 +1,2 @@
+// IS_APPLICABLE: false
+fun test(vararg a: String) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/withContravariant.kt b/idea/testData/intentions/convertArrayParameterToVararg/withContravariant.kt
new file mode 100644
index 00000000000..071282772fe
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/withContravariant.kt
@@ -0,0 +1,2 @@
+// IS_APPLICABLE: false
+fun test(a: Array) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt b/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt
new file mode 100644
index 00000000000..fedfe72944b
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt
@@ -0,0 +1,2 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(a: Array) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt.after
new file mode 100644
index 00000000000..cf41b620617
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt.after
@@ -0,0 +1,2 @@
+// INTENTION_TEXT: Convert to vararg parameter
+fun test(vararg a: T) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt b/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt
new file mode 100644
index 00000000000..f001eea9d6a
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt
@@ -0,0 +1 @@
+fun test(a: Array = emptyArray()) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt.after b/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt.after
new file mode 100644
index 00000000000..7e2603d3541
--- /dev/null
+++ b/idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt.after
@@ -0,0 +1 @@
+fun test(vararg a: String = emptyArray()) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/.intention b/idea/testData/intentions/convertVarargParameterToArray/.intention
new file mode 100644
index 00000000000..7431c9453c6
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/.intention
@@ -0,0 +1 @@
+org.jetbrains.kotlin.idea.intentions.ConvertVarargParameterToArrayIntention
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/genericType.kt b/idea/testData/intentions/convertVarargParameterToArray/genericType.kt
new file mode 100644
index 00000000000..a92ecbbda6c
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/genericType.kt
@@ -0,0 +1 @@
+fun test(vararg a: T) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/genericType.kt.after b/idea/testData/intentions/convertVarargParameterToArray/genericType.kt.after
new file mode 100644
index 00000000000..73310716d67
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/genericType.kt.after
@@ -0,0 +1 @@
+fun test(a: Array) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt b/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt
new file mode 100644
index 00000000000..f42aa83d92d
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt
@@ -0,0 +1,3 @@
+class Test(private vararg val a: String) {
+ val size = a.size
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt.after b/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt.after
new file mode 100644
index 00000000000..1bf1afea1c2
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt.after
@@ -0,0 +1,3 @@
+class Test(private val a: Array) {
+ val size = a.size
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/int.kt b/idea/testData/intentions/convertVarargParameterToArray/int.kt
new file mode 100644
index 00000000000..09bc2703b96
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/int.kt
@@ -0,0 +1 @@
+fun test(vararg a: Int) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/int.kt.after b/idea/testData/intentions/convertVarargParameterToArray/int.kt.after
new file mode 100644
index 00000000000..9c31bc61766
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/int.kt.after
@@ -0,0 +1 @@
+fun test(a: IntArray) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/long.kt b/idea/testData/intentions/convertVarargParameterToArray/long.kt
new file mode 100644
index 00000000000..b236f2c2057
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/long.kt
@@ -0,0 +1 @@
+fun test(vararg a: Long) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/long.kt.after b/idea/testData/intentions/convertVarargParameterToArray/long.kt.after
new file mode 100644
index 00000000000..48f86fc68fc
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/long.kt.after
@@ -0,0 +1 @@
+fun test(a: LongArray) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/noVararg.kt b/idea/testData/intentions/convertVarargParameterToArray/noVararg.kt
new file mode 100644
index 00000000000..66d6f4112d8
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/noVararg.kt
@@ -0,0 +1,2 @@
+// IS_APPLICABLE: false
+fun test(a: String) {}
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/string.kt b/idea/testData/intentions/convertVarargParameterToArray/string.kt
new file mode 100644
index 00000000000..0ab86909329
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/string.kt
@@ -0,0 +1 @@
+fun test(vararg a: String) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/string.kt.after b/idea/testData/intentions/convertVarargParameterToArray/string.kt.after
new file mode 100644
index 00000000000..5fb96d8dd14
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/string.kt.after
@@ -0,0 +1 @@
+fun test(a: Array) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt b/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt
new file mode 100644
index 00000000000..1d9a9df8da2
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt
@@ -0,0 +1 @@
+fun test(vararg a: String = emptyArray()) = a.size
\ No newline at end of file
diff --git a/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt.after b/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt.after
new file mode 100644
index 00000000000..b121719b050
--- /dev/null
+++ b/idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt.after
@@ -0,0 +1 @@
+fun test(a: Array = emptyArray()) = a.size
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
index a47fc027f21..946d0fa9fd6 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
@@ -3994,6 +3994,87 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
+ @TestMetadata("idea/testData/intentions/convertArrayParameterToVararg")
+ @TestDataPath("$PROJECT_ROOT")
+ @RunWith(JUnit3RunnerWithInners.class)
+ public static class ConvertArrayParameterToVararg extends AbstractIntentionTest {
+ public void testAllFilesPresentInConvertArrayParameterToVararg() throws Exception {
+ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertArrayParameterToVararg"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true);
+ }
+
+ @TestMetadata("arrayGenericType.kt")
+ public void testArrayGenericType() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/arrayGenericType.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("arrayInt.kt")
+ public void testArrayInt() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/arrayInt.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("arrayString.kt")
+ public void testArrayString() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/arrayString.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("inConstructor.kt")
+ public void testInConstructor() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/inConstructor.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("inLambda.kt")
+ public void testInLambda() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/inLambda.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("intArray.kt")
+ public void testIntArray() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/intArray.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("longArray.kt")
+ public void testLongArray() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/longArray.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("starProjection.kt")
+ public void testStarProjection() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/starProjection.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("vararg.kt")
+ public void testVararg() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/vararg.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("withContravariant.kt")
+ public void testWithContravariant() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/withContravariant.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("withCovariance.kt")
+ public void testWithCovariance() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/withCovariance.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("withDefaultValue.kt")
+ public void testWithDefaultValue() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertArrayParameterToVararg/withDefaultValue.kt");
+ doTest(fileName);
+ }
+ }
+
@TestMetadata("idea/testData/intentions/convertAssertToIf")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -7375,6 +7456,57 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
+ @TestMetadata("idea/testData/intentions/convertVarargParameterToArray")
+ @TestDataPath("$PROJECT_ROOT")
+ @RunWith(JUnit3RunnerWithInners.class)
+ public static class ConvertVarargParameterToArray extends AbstractIntentionTest {
+ public void testAllFilesPresentInConvertVarargParameterToArray() throws Exception {
+ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/convertVarargParameterToArray"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true);
+ }
+
+ @TestMetadata("genericType.kt")
+ public void testGenericType() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/genericType.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("inConstructor.kt")
+ public void testInConstructor() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/inConstructor.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("int.kt")
+ public void testInt() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/int.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("long.kt")
+ public void testLong() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/long.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("noVararg.kt")
+ public void testNoVararg() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/noVararg.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("string.kt")
+ public void testString() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/string.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("withDefaultValue.kt")
+ public void testWithDefaultValue() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertVarargParameterToArray/withDefaultValue.kt");
+ doTest(fileName);
+ }
+ }
+
@TestMetadata("idea/testData/intentions/copyConcatenatedStringToClipboard")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)