Do not suggest to add variance modifier if both in and out are possible

This commit is contained in:
Mikhail Glukhikh
2016-04-15 16:16:29 +03:00
parent e60930d5ce
commit c7b2042b77
5 changed files with 5 additions and 14 deletions
@@ -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,
@@ -31,12 +31,4 @@
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Type parameter can have 'in' or 'out' variance</problem_class>
<description>Type parameter can have 'in' variance</description>
</problem>
<problem>
<file>test.kt</file>
<line>24</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Type parameter can have 'in' or 'out' variance</problem_class>
<description>Type parameter can have 'in' or 'out' variance</description>
</problem>
</problems>
+1 -1
View File
@@ -21,7 +21,7 @@ abstract class AbstractOut<T> {
abstract class AbstractIn<T>(private val foo: T) {
fun bar(arg: T) = foo == arg
}
interface Empty<T>
interface Empty<T> // here we do not report anything to avoid ambiguity
abstract class AbstractInv<T>(var foo: T)
+2 -1
View File
@@ -1,2 +1,3 @@
// "Add 'out' variance" "true"
// "Add 'out' variance" "false"
// ACTION: Implement interface
interface Empty<<caret>T>
@@ -1,2 +0,0 @@
// "Add 'out' variance" "true"
interface Empty<out T>