Do not implicitly propagate deprecations originated in Java

^KT-29604 Fixed
This commit is contained in:
Denis Zharkov
2019-02-11 12:40:24 +03:00
parent 2f546d1003
commit abad408d7b
17 changed files with 307 additions and 6 deletions
@@ -40,7 +40,7 @@ public class C extends A {
fun use(a: A, b: B, c: C) {
a.<!DEPRECATION!>f<!>()
b.<!DEPRECATION!>f<!>()
b.f()
c.<!DEPRECATION!>f<!>()
A.<!DEPRECATION!>D<!>
@@ -0,0 +1,36 @@
// FILE: J.java
public interface J {
@Deprecated
public void foo();
@Deprecated
public String bar();
@Deprecated
public CharSequence baz();
}
// FILE: J2.java
public interface J2 extends J, K {
}
// FILE: main.kt
interface K {
fun bar(): CharSequence
fun baz(): String
}
interface A : J, K
fun main(j: J, j2: J2, a: A) {
j.<!DEPRECATION!>foo<!>()
j2.<!DEPRECATION!>foo<!>()
a.<!DEPRECATION!>foo<!>()
j.<!DEPRECATION!>bar<!>()
j2.<!DEPRECATION!>bar<!>()
a.<!DEPRECATION!>bar<!>()
j.<!DEPRECATION!>baz<!>()
j2.baz()
a.baz()
}
@@ -0,0 +1,38 @@
package
public fun main(/*0*/ j: J, /*1*/ j2: J2, /*2*/ a: A): kotlin.Unit
public interface A : J, K {
@kotlin.Deprecated(message = "Deprecated in Java") public abstract override /*2*/ /*fake_override*/ fun bar(): kotlin.String!
public abstract override /*2*/ /*fake_override*/ fun baz(): kotlin.String
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "Deprecated in Java") public abstract override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface J {
@kotlin.Deprecated(message = "Deprecated in Java") public abstract fun bar(): kotlin.String!
@kotlin.Deprecated(message = "Deprecated in Java") public abstract fun baz(): kotlin.CharSequence!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "Deprecated in Java") public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface J2 : J, K {
@kotlin.Deprecated(message = "Deprecated in Java") public abstract override /*2*/ /*fake_override*/ fun bar(): kotlin.String
public abstract override /*2*/ /*fake_override*/ fun baz(): kotlin.String
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "Deprecated in Java") public abstract override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface K {
public abstract fun bar(): kotlin.CharSequence
public abstract fun baz(): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,27 @@
// FILE: J.java
public class J {
@Deprecated
public void foo() {}
}
// FILE: J2.java
public class J2 extends J implements WithDeprecation {
@Override
public void foo() {}
}
// FILE: main.kt
interface WithDeprecation {
@Deprecated("")
fun foo()
}
class A : J(), WithDeprecation {
override fun foo() {}
}
fun main() {
J().<!DEPRECATION!>foo<!>()
J2().<!DEPRECATION!>foo<!>()
A().<!DEPRECATION!>foo<!>()
}
@@ -0,0 +1,34 @@
package
public fun main(): kotlin.Unit
public final class A : J, WithDeprecation {
public constructor A()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ fun foo(): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class J {
public constructor J()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "Deprecated in Java") public open fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class J2 : J, WithDeprecation {
public constructor J2()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override public open override /*2*/ fun foo(): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface WithDeprecation {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "") public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -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 foo()
}
fun main(j: J, j2: J2, a: A) {
j.<!DEPRECATION!>foo<!>()
j2.foo()
a.foo()
}
@@ -0,0 +1,24 @@
package
public fun main(/*0*/ j: J, /*1*/ j2: J2, /*2*/ a: A): kotlin.Unit
public interface A : J {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface J {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.Deprecated(message = "Deprecated in Java") public abstract fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface J2 : J {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override public abstract override /*1*/ fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}