From d719d06020b658347c363b773a4ad0048abe7a64 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Wed, 13 Dec 2017 05:26:41 +0300 Subject: [PATCH] Don't suggest "convert to array literal" for *arrayOf #KT-21726 Fixed --- .../inspections/ReplaceArrayOfWithLiteralInspection.kt | 5 ++++- .../replaceArrayOfWithLiteral/unnamedVararg.kt | 7 +++++++ .../idea/inspections/LocalInspectionTestGenerated.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/unnamedVararg.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt index cdc801cb7d5..3e596134480 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt @@ -44,7 +44,10 @@ class ReplaceArrayOfWithLiteralInspection : AbstractKotlinInspection() { val parent = expression.parent when (parent) { - is KtValueArgument -> parent.parent.parent as? KtAnnotationEntry ?: return + is KtValueArgument -> { + if (parent.parent.parent !is KtAnnotationEntry) return + if (parent.getSpreadElement() != null && !parent.isNamed()) return + } is KtParameter -> { val constructor = parent.parent.parent as? KtPrimaryConstructor ?: return val containingClass = constructor.getContainingClassOrObject() diff --git a/idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/unnamedVararg.kt b/idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/unnamedVararg.kt new file mode 100644 index 00000000000..262500bdb61 --- /dev/null +++ b/idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/unnamedVararg.kt @@ -0,0 +1,7 @@ +// LANGUAGE_VERSION: 1.2 +// PROBLEM: none + +annotation class Some(vararg val strings: String) + +@Some(*arrayOf("alpha", "beta", "omega")) +class My diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index fe3300a87c6..975fb057379 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -2324,6 +2324,12 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { doTest(fileName); } + @TestMetadata("unnamedVararg.kt") + public void testUnnamedVararg() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/unnamedVararg.kt"); + doTest(fileName); + } + @TestMetadata("vararg.kt") public void testVararg() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/replaceArrayOfWithLiteral/vararg.kt");