Do not suggest to add variance modifier if both in and out are possible
This commit is contained in:
@@ -56,8 +56,8 @@ class AddVarianceModifierInspection : AbstractKotlinInspection() {
|
|||||||
val variances = listOf(Variance.IN_VARIANCE, Variance.OUT_VARIANCE).filter {
|
val variances = listOf(Variance.IN_VARIANCE, Variance.OUT_VARIANCE).filter {
|
||||||
variancePossible(klass, parameterDescriptor, it, context)
|
variancePossible(klass, parameterDescriptor, it, context)
|
||||||
}
|
}
|
||||||
if (variances.isNotEmpty()) {
|
if (variances.size == 1) {
|
||||||
val suggested = variances.joinToString(" or ") { "'$it'" }
|
val suggested = variances.first()
|
||||||
val fixes = variances.map { AddVarianceFix(it) }
|
val fixes = variances.map { AddVarianceFix(it) }
|
||||||
holder.registerProblem(
|
holder.registerProblem(
|
||||||
typeParameter,
|
typeParameter,
|
||||||
|
|||||||
@@ -31,12 +31,4 @@
|
|||||||
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Type parameter can have 'in' or 'out' variance</problem_class>
|
<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>
|
<description>Type parameter can have 'in' variance</description>
|
||||||
</problem>
|
</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>
|
</problems>
|
||||||
+1
-1
@@ -21,7 +21,7 @@ abstract class AbstractOut<T> {
|
|||||||
abstract class AbstractIn<T>(private val foo: T) {
|
abstract class AbstractIn<T>(private val foo: T) {
|
||||||
fun bar(arg: T) = foo == arg
|
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)
|
abstract class AbstractInv<T>(var foo: T)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,2 +1,3 @@
|
|||||||
// "Add 'out' variance" "true"
|
// "Add 'out' variance" "false"
|
||||||
|
// ACTION: Implement interface
|
||||||
interface Empty<<caret>T>
|
interface Empty<<caret>T>
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
// "Add 'out' variance" "true"
|
|
||||||
interface Empty<out T>
|
|
||||||
Reference in New Issue
Block a user