K2: generate implicit dispatch receivers for static members called
#KT-55371 Fixed #KT-55372 Fixed
This commit is contained in:
committed by
Space Team
parent
9cfcf057ef
commit
4167a69e30
+28
@@ -0,0 +1,28 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: javapackage/PackagePrivateGrandparentAbstractClass.java
|
||||
|
||||
package javapackage;
|
||||
|
||||
/*package-private*/ interface PackagePrivateGrandparentInterface {
|
||||
static void publicStaticMethod() {}
|
||||
|
||||
String publicStaticField = "OK";
|
||||
}
|
||||
|
||||
// FILE: javapackage/PublicParentClass.java
|
||||
|
||||
package javapackage;
|
||||
|
||||
public class PublicParentClass implements PackagePrivateGrandparentInterface {}
|
||||
|
||||
// FILE: Child.kt
|
||||
|
||||
import javapackage.PublicParentClass
|
||||
|
||||
class Child : PublicParentClass() {
|
||||
fun foo(): String {
|
||||
<!UNRESOLVED_REFERENCE!>publicStaticMethod<!>() // Error!
|
||||
PublicParentClass.<!UNRESOLVED_REFERENCE!>publicStaticMethod<!>() // Error!
|
||||
return publicStaticField // Ok!
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
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.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
package javapackage {
|
||||
|
||||
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 fun publicStaticMethod(): kotlin.Unit
|
||||
}
|
||||
|
||||
public open class PublicParentClass : javapackage.PackagePrivateGrandparentInterface {
|
||||
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"
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// FILE: javapackage/PackagePrivateGrandparentAbstractClass.java
|
||||
package javapackage;
|
||||
|
||||
/*package-private*/ abstract class PackagePrivateGrandparentAbstractClass {
|
||||
public static void publicStaticMethod() {}
|
||||
}
|
||||
|
||||
// FILE: javapackage/KotlinParentClass.kt
|
||||
package javapackage
|
||||
|
||||
internal open class KotlinParentClass : PackagePrivateGrandparentAbstractClass()
|
||||
|
||||
// FILE: Child.kt
|
||||
import javapackage.KotlinParentClass
|
||||
|
||||
internal class Child : KotlinParentClass() {
|
||||
fun foo() {
|
||||
<!INVISIBLE_REFERENCE!>publicStaticMethod<!>()
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// FILE: javapackage/PackagePrivateGrandparentAbstractClass.java
|
||||
package javapackage;
|
||||
|
||||
/*package-private*/ abstract class PackagePrivateGrandparentAbstractClass {
|
||||
public static void publicStaticMethod() {}
|
||||
}
|
||||
|
||||
// FILE: javapackage/KotlinParentClass.kt
|
||||
package javapackage
|
||||
|
||||
internal open class KotlinParentClass : PackagePrivateGrandparentAbstractClass()
|
||||
|
||||
// FILE: Child.kt
|
||||
import javapackage.KotlinParentClass
|
||||
|
||||
internal class Child : KotlinParentClass() {
|
||||
fun foo() {
|
||||
<!INVISIBLE_MEMBER!>publicStaticMethod<!>()
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package
|
||||
|
||||
internal final class Child : javapackage.KotlinParentClass {
|
||||
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 {
|
||||
|
||||
internal open class KotlinParentClass : javapackage.PackagePrivateGrandparentAbstractClass {
|
||||
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*/ abstract class PackagePrivateGrandparentAbstractClass {
|
||||
public/*package*/ constructor PackagePrivateGrandparentAbstractClass()
|
||||
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 open fun publicStaticMethod(): kotlin.Unit
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user