Add variance (in / out) modifier inspection #KT-11090 Fixed

This commit is contained in:
Mikhail Glukhikh
2016-04-01 17:59:47 +03:00
parent 7c02a1eaad
commit 1b9c6e0ea2
15 changed files with 224 additions and 2 deletions
@@ -0,0 +1,42 @@
<problems>
<problem>
<file>test.kt</file>
<line>1</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 'out' variance</description>
</problem>
<problem>
<file>test.kt</file>
<line>5</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' variance</description>
</problem>
<problem>
<file>test.kt</file>
<line>17</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 'out' variance</description>
</problem>
<problem>
<file>test.kt</file>
<line>21</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' 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>
@@ -0,0 +1 @@
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.inspections.AddVarianceModifierInspection
+24
View File
@@ -0,0 +1,24 @@
interface EffectivelyOut<T> {
fun foo(): T
val bar: T
}
interface EffectivelyIn<T> {
fun foo(arg: T)
}
interface Invariant1<T> {
var bar: T
}
interface Invariant2<T> {
fun T.foo(): T
}
interface Invariant3<T : Invariant1<T>> {
fun T.foo()
}
abstract class AbstractOut<T> {
abstract val foo: T
private var bar = foo
}
abstract class AbstractIn<T>(private val foo: T) {
fun bar(arg: T) = foo == arg
}
interface Empty<T>
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.AddVarianceModifierInspection
+2
View File
@@ -0,0 +1,2 @@
// "Add 'out' variance" "true"
interface Empty<<caret>T>
@@ -0,0 +1,4 @@
// "Add 'in' variance" "true"
abstract class AbstractIn<<caret>T>(private val foo: T) {
fun bar(arg: T) = foo == arg
}
@@ -0,0 +1,4 @@
// "Add 'in' variance" "true"
abstract class AbstractIn<in T>(private val foo: T) {
fun bar(arg: T) = foo == arg
}
@@ -0,0 +1,5 @@
// "Add 'out' variance" "true"
abstract class AbstractOut<<caret>T> {
abstract val foo: T
private var bar = foo
}
@@ -0,0 +1,5 @@
// "Add 'out' variance" "true"
abstract class AbstractOut<out T> {
abstract val foo: T
private var bar = foo
}
@@ -0,0 +1,2 @@
// "Add 'out' variance" "true"
interface Empty<out T>