Member is considered deprecated if it overrides only deprecated members

Property accessor is considered deprecated when the property is
Provide IDE inspection to strikeout members overriding deprecated members (like in java)
This commit is contained in:
Pavel V. Talanov
2016-01-12 19:28:22 +03:00
parent 9b3d97470f
commit db07d783a2
14 changed files with 871 additions and 43 deletions
@@ -0,0 +1,62 @@
<problems>
<problem>
<file>test.kt</file>
<line>15</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt"/>
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>20</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt"/>
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>25</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt"/>
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>31</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>32</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>30</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
<problem>
<file>test.kt</file>
<line>39</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="DEPRECATED_ATTRIBUTES">Overriding deprecated member</problem_class>
<description>Overrides deprecated member in 'foo.I'</description>
</problem>
</problems>
@@ -0,0 +1 @@
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.inspections.OverridingDeprecatedMemberInspection
@@ -0,0 +1,47 @@
package foo
interface I {
@Deprecated("")
fun f(): Int
@Deprecated("")
var p: Int
var i: Int
@Deprecated("") set
}
interface II : I {
override fun f(): Int {
}
}
interface III : I {
override fun f(): Int {
}
}
class C : I {
override fun f(): Int {
}
}
interface IP : I {
override var p: Int
get() = throw UnsupportedOperationException()
set(value) {
}
}
interface IA : I {
override var i: Int
get() = throw UnsupportedOperationException()
set(value) {
}
}
interface Explicit : I {
@Deprecated("a")
override fun f(): Int {
}
}