overriddenDescriptors is empty for java static property and function declarations
Fake overrides are still created for java static with non-empty overriddenDescriptors Add tests for inheriting visibility for java static members Add test: check that java static declarations that shadow deprecated declarations should not be deprecated Add test for corner case where "overriding" java static constant led to incorrect type in inheritor Fix test data for existing tests
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
|
||||
@Deprecated
|
||||
public static final String D = "d";
|
||||
|
||||
@Deprecated
|
||||
public void f() {
|
||||
return text;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void bar() {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
|
||||
public class B extends A {
|
||||
|
||||
public static final String D = "d";
|
||||
|
||||
@Override
|
||||
public void f() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public static void bar() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE: C.java
|
||||
|
||||
public class C extends A {
|
||||
}
|
||||
|
||||
// FILE: use.kt
|
||||
|
||||
fun use(a: A, b: B, c: C) {
|
||||
a.<!DEPRECATION!>f<!>()
|
||||
b.<!DEPRECATION!>f<!>()
|
||||
c.<!DEPRECATION!>f<!>()
|
||||
|
||||
A.<!DEPRECATION!>D<!>
|
||||
B.D
|
||||
C.<!DEPRECATION!>D<!>
|
||||
|
||||
A.<!DEPRECATION!>bar<!>()
|
||||
B.bar()
|
||||
C.<!DEPRECATION!>bar<!>()
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package
|
||||
|
||||
public fun use(/*0*/ a: A, /*1*/ b: B, /*2*/ c: C): kotlin.Unit
|
||||
|
||||
public open class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public open fun f(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public const final val D: kotlin.String = "d"
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public open fun bar(): kotlin.Unit
|
||||
}
|
||||
|
||||
public open class B : A {
|
||||
public constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun f(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public const final val D: kotlin.String = "d"
|
||||
public open fun bar(): kotlin.Unit
|
||||
}
|
||||
|
||||
public open class C : A {
|
||||
public constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun f(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public const final override /*1*/ /*fake_override*/ val D: kotlin.String
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun bar(): kotlin.Unit
|
||||
}
|
||||
@@ -19,5 +19,5 @@ public open class Bbb : Aaa {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public const final override /*1*/ val i: kotlin.String = "s"
|
||||
public const final val i: kotlin.String = "s"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// FILE: B.kt
|
||||
|
||||
import aa.B
|
||||
|
||||
fun use() {
|
||||
// checking that CONST is of platform type
|
||||
B.CONST = null
|
||||
B.CONST?.length
|
||||
B.CONST.length
|
||||
}
|
||||
|
||||
// FILE: aa/A.java
|
||||
package aa;
|
||||
|
||||
public class A {
|
||||
public static int CONST = 3;
|
||||
}
|
||||
|
||||
// FILE: aa/B.java
|
||||
package aa;
|
||||
|
||||
public class B extends A {
|
||||
public static String CONST = null;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public fun use(): kotlin.Unit
|
||||
+2
-2
@@ -23,8 +23,8 @@ public/*package*/ open class B : A {
|
||||
|
||||
// Static members
|
||||
public final var a: kotlin.Int
|
||||
public final override /*1*/ var b: kotlin.Int
|
||||
public open override /*1*/ fun bar(): kotlin.Unit
|
||||
public final var b: kotlin.Int
|
||||
public open fun bar(): kotlin.Unit
|
||||
public open fun bar(/*0*/ i: kotlin.Int): kotlin.Unit
|
||||
public open fun foo(): kotlin.Unit
|
||||
public open fun foo(/*0*/ i: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -38,5 +38,5 @@ public open class O : A, B {
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final override /*2*/ var field: kotlin.Double
|
||||
public final var field: kotlin.Double
|
||||
}
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@ public interface B : A {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public const final override /*1*/ val field: kotlin.String
|
||||
public const final val field: kotlin.String
|
||||
}
|
||||
|
||||
public open class E : A, B {
|
||||
@@ -38,5 +38,5 @@ public open class O : A, B {
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final override /*2*/ var field: kotlin.Double
|
||||
public final var field: kotlin.Double
|
||||
}
|
||||
|
||||
+2
-2
@@ -67,7 +67,7 @@ public open class EO : E {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final override /*2*/ var field: kotlin.Double
|
||||
public final var field: kotlin.Double
|
||||
}
|
||||
|
||||
public open class O : C, D {
|
||||
@@ -77,7 +77,7 @@ public open class O : C, D {
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final override /*2*/ var field: kotlin.Double
|
||||
public final var field: kotlin.Double
|
||||
}
|
||||
|
||||
public open class OO : O {
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ public open class E : D, I {
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public/*package*/ final override /*2*/ var a: kotlin.Int
|
||||
public/*package*/ final var a: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var b: kotlin.Int
|
||||
public/*package*/ final override /*1*/ /*fake_override*/ var c: kotlin.Int
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun bar(): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -18,8 +18,8 @@ public open class B : A {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public/*package*/ open override /*1*/ fun bar(): kotlin.Long
|
||||
public/*package*/ open override /*1*/ fun foo(): kotlin.Unit
|
||||
public/*package*/ open fun bar(): kotlin.Long
|
||||
public/*package*/ open fun foo(): kotlin.Unit
|
||||
}
|
||||
|
||||
public final class E : B {
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public open class X : B {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public/*package*/ open override /*1*/ fun foo(): kotlin.Double
|
||||
public/*package*/ open fun foo(): kotlin.Double
|
||||
}
|
||||
|
||||
public final class Y : X {
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ public open class B : A {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public open override /*1*/ fun foo(): kotlin.Int
|
||||
public open fun foo(): kotlin.Int
|
||||
}
|
||||
|
||||
public final class C : B {
|
||||
|
||||
Reference in New Issue
Block a user