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:
Pavel V. Talanov
2016-02-08 19:04:18 +03:00
parent 7e78e8d8ab
commit 7d98103c0c
30 changed files with 249 additions and 39 deletions
@@ -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
@@ -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
@@ -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
}
@@ -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
}
@@ -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 {
@@ -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
@@ -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 {
@@ -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 {
@@ -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 {