[FIR] Report warning on non-deprecated overrides of deprecated members

^KT-47902
This commit is contained in:
Dmitriy Novozhilov
2021-08-27 17:30:59 +03:00
parent ef9ad5af51
commit 88913aa2a3
18 changed files with 140 additions and 40 deletions
@@ -29,49 +29,49 @@ interface NotDeprecated {
}
open class WE : WarningDeprecated, ErrorDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class WH : WarningDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class EH : ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NW : WarningDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NE : ErrorDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NH : HiddenDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class WEH: WarningDeprecated, ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NWEH: NotDeprecated, WarningDeprecated, ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
@@ -89,12 +89,12 @@ interface E2: ErrorDeprecated
interface W2: WarningDeprecated
interface EW2: E2, W2 {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
interface HEW2: EW2, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
@@ -29,49 +29,49 @@ interface NotDeprecated {
}
open class WE : WarningDeprecated, ErrorDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class WH : WarningDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class EH : ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NW : WarningDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NE : ErrorDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NH : HiddenDeprecated, NotDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class WEH: WarningDeprecated, ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
open class NWEH: NotDeprecated, WarningDeprecated, ErrorDeprecated, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
@@ -89,12 +89,12 @@ interface E2: ErrorDeprecated
interface W2: WarningDeprecated
interface EW2: E2, W2 {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
interface HEW2: EW2, HiddenDeprecated {
override fun f() {
override fun <!OVERRIDE_DEPRECATION!>f<!>() {
}
}
@@ -32,48 +32,48 @@ open class SetterDeprecated {
}
class WD: WarningDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {}
}
class ED: ErrorDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class GD: GetterDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class SD: SetterDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class SDH: SetterDeprecated(), HiddenDeprecated {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class EDH: ErrorDeprecated(), HiddenDeprecated {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class NED: ErrorDeprecated(), NoDeprecation {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
@@ -32,48 +32,48 @@ open class SetterDeprecated {
}
class WD: WarningDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {}
}
class ED: ErrorDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class GD: GetterDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class SD: SetterDeprecated() {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class SDH: SetterDeprecated(), HiddenDeprecated {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class EDH: ErrorDeprecated(), HiddenDeprecated {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
}
class NED: ErrorDeprecated(), NoDeprecation {
override var p: Int
override var <!OVERRIDE_DEPRECATION!>p<!>: Int
get() = 3
set(value) {
}
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER
// FILE: A.java
@Deprecated
public class A {
@Deprecated
public String getFoo(String text) {
return text;
}
}
// FILE: B.kt
class B(private @property:Deprecated val foo: String) : <!DEPRECATION!>A<!>() {
override fun <!OVERRIDE_DEPRECATION!>getFoo<!>(text: String): String = super.<!DEPRECATION!>getFoo<!>(text + <!DEPRECATION!>foo<!>)
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER
// FILE: A.java
@@ -16,7 +16,7 @@ interface WithDeprecation {
}
class A : J(), WithDeprecation {
override fun foo() {}
override fun <!OVERRIDE_DEPRECATION!>foo<!>() {}
}
fun main() {
@@ -0,0 +1,23 @@
// FILE: J.java
public interface J {
@Deprecated
public void foo();
}
// FILE: J2.java
public interface J2 extends J {
@Override
public void foo();
}
// FILE: main.kt
interface A : J {
override fun <!OVERRIDE_DEPRECATION!>foo<!>()
}
fun main(j: J, j2: J2, a: A) {
j.<!DEPRECATION!>foo<!>()
j2.foo()
a.foo()
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// FILE: J.java
public interface J {
@Deprecated
@@ -58,13 +58,13 @@ interface I {
}
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class X<!> : I {
override fun foo1() {
override fun <!OVERRIDE_DEPRECATION!>foo1<!>() {
}
}
class B : A(<!ARGUMENT_TYPE_MISMATCH!>""<!>) {
// still can override it
override fun memberFun() {
override fun <!OVERRIDE_DEPRECATION!>memberFun<!>() {
super.<!INVISIBLE_REFERENCE!>memberFun<!>() // but cannot call super :)
}
}