From c7b2042b77bf82b9266413bff68e6bfd12aa0089 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 15 Apr 2016 16:16:29 +0300 Subject: [PATCH] Do not suggest to add variance modifier if both in and out are possible --- .../idea/inspections/AddVarianceModifierInspection.kt | 4 ++-- .../addVarianceModifier/inspectionData/expected.xml | 8 -------- idea/testData/inspections/addVarianceModifier/test.kt | 2 +- idea/testData/quickfix/addVarianceModifier/emptyTest.kt | 3 ++- .../quickfix/addVarianceModifier/emptyTest.kt.after | 2 -- 5 files changed, 5 insertions(+), 14 deletions(-) delete mode 100644 idea/testData/quickfix/addVarianceModifier/emptyTest.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/AddVarianceModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/AddVarianceModifierInspection.kt index 12c000cdc4f..557ee318bd0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/AddVarianceModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/AddVarianceModifierInspection.kt @@ -56,8 +56,8 @@ class AddVarianceModifierInspection : AbstractKotlinInspection() { val variances = listOf(Variance.IN_VARIANCE, Variance.OUT_VARIANCE).filter { variancePossible(klass, parameterDescriptor, it, context) } - if (variances.isNotEmpty()) { - val suggested = variances.joinToString(" or ") { "'$it'" } + if (variances.size == 1) { + val suggested = variances.first() val fixes = variances.map { AddVarianceFix(it) } holder.registerProblem( typeParameter, diff --git a/idea/testData/inspections/addVarianceModifier/inspectionData/expected.xml b/idea/testData/inspections/addVarianceModifier/inspectionData/expected.xml index 07cddc55bc5..1dceb4a8681 100644 --- a/idea/testData/inspections/addVarianceModifier/inspectionData/expected.xml +++ b/idea/testData/inspections/addVarianceModifier/inspectionData/expected.xml @@ -31,12 +31,4 @@ Type parameter can have 'in' or 'out' variance Type parameter can have 'in' variance - - test.kt - 24 - light_idea_test_case - - Type parameter can have 'in' or 'out' variance - Type parameter can have 'in' or 'out' variance - \ No newline at end of file diff --git a/idea/testData/inspections/addVarianceModifier/test.kt b/idea/testData/inspections/addVarianceModifier/test.kt index 12b0cdde047..79fbaf60121 100644 --- a/idea/testData/inspections/addVarianceModifier/test.kt +++ b/idea/testData/inspections/addVarianceModifier/test.kt @@ -21,7 +21,7 @@ abstract class AbstractOut { abstract class AbstractIn(private val foo: T) { fun bar(arg: T) = foo == arg } -interface Empty +interface Empty // here we do not report anything to avoid ambiguity abstract class AbstractInv(var foo: T) diff --git a/idea/testData/quickfix/addVarianceModifier/emptyTest.kt b/idea/testData/quickfix/addVarianceModifier/emptyTest.kt index 0987b32a730..1b5241428c6 100644 --- a/idea/testData/quickfix/addVarianceModifier/emptyTest.kt +++ b/idea/testData/quickfix/addVarianceModifier/emptyTest.kt @@ -1,2 +1,3 @@ -// "Add 'out' variance" "true" +// "Add 'out' variance" "false" +// ACTION: Implement interface interface Empty<T> \ No newline at end of file diff --git a/idea/testData/quickfix/addVarianceModifier/emptyTest.kt.after b/idea/testData/quickfix/addVarianceModifier/emptyTest.kt.after deleted file mode 100644 index face154ad24..00000000000 --- a/idea/testData/quickfix/addVarianceModifier/emptyTest.kt.after +++ /dev/null @@ -1,2 +0,0 @@ -// "Add 'out' variance" "true" -interface Empty \ No newline at end of file