FE: add some more tests around static field fake overrides

This commit is contained in:
Mikhail Glukhikh
2023-01-18 09:04:53 +01:00
committed by Space Team
parent 938e1d5ce8
commit d436d56871
15 changed files with 276 additions and 0 deletions
@@ -0,0 +1,18 @@
// FIR_IDENTICAL
// FILE: javapackage/PublicParentInterface.java
package javapackage;
public interface PublicParentInterface {
String publicStaticField = "OK";
}
// FILE: Child.kt
import javapackage.PublicParentInterface
class Child : PublicParentInterface {
fun foo(): String {
return <!UNRESOLVED_REFERENCE!>publicStaticField<!>
}
}
@@ -0,0 +1,21 @@
package
public final class Child : javapackage.PublicParentInterface {
public constructor Child()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.String
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
package javapackage {
public interface PublicParentInterface {
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
// Static members
public const final val publicStaticField: kotlin.String = "OK"
}
}
@@ -0,0 +1,22 @@
FILE: KotlinParentClass.kt
package javapackage
public final class KotlinParentClass : R|javapackage/PackagePrivateGrandparentInterface| {
public constructor(): R|javapackage/KotlinParentClass| {
super<R|kotlin/Any|>()
}
}
FILE: Child.kt
public final class Child : R|javapackage/PublicParentClass| {
public constructor(): R|Child| {
super<R|javapackage/PublicParentClass|>()
}
public final fun foo(): R|kotlin/Unit| {
lval x: R|kotlin/String| = R|javapackage/PackagePrivateGrandparentInterface.publicStaticField|
lval y: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField|
lval z: <ERROR TYPE REF: Unresolved name: publicStaticField> = Q|javapackage/KotlinParentClass|.<Unresolved name: publicStaticField>#
}
}
@@ -0,0 +1,34 @@
// FIR_IDENTICAL
// FIR_DUMP
// FILE: javapackage/PackagePrivateGrandparentAbstractClass.java
package javapackage;
/*package-private*/ interface PackagePrivateGrandparentInterface {
public static String publicStaticField = "OK";
}
// FILE: javapackage/KotlinParentClass.kt
package javapackage
class KotlinParentClass : PackagePrivateGrandparentInterface
// FILE: javapackage/PublicParentClass.java
package javapackage;
public class PublicParentClass extends KotlinParentClass {}
// FILE: Child.kt
import javapackage.PublicParentClass
import javapackage.KotlinParentClass
class Child : PublicParentClass() {
fun foo() {
val x = publicStaticField
val y = PublicParentClass.publicStaticField
val z = KotlinParentClass.<!UNRESOLVED_REFERENCE!>publicStaticField<!>
}
}
@@ -0,0 +1,38 @@
package
public final class Child : javapackage.PublicParentClass {
public constructor Child()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
package javapackage {
public final class KotlinParentClass : javapackage.PackagePrivateGrandparentInterface {
public constructor KotlinParentClass()
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
}
public/*package*/ interface PackagePrivateGrandparentInterface {
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
// Static members
public const final val publicStaticField: kotlin.String = "OK"
}
public open class PublicParentClass : javapackage.KotlinParentClass {
public constructor PublicParentClass()
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
// Static members
public const final override /*1*/ /*fake_override*/ val publicStaticField: kotlin.String = "OK"
}
}