Calls to non-@JvmStatic protected members of companion objects from subclasses are now errors (unsupported yet)
This commit is contained in:
@@ -28,6 +28,6 @@ class B: A() {
|
||||
devNull(A.internal_val)
|
||||
devNull(A.public_val)
|
||||
devNull(A.<!INVISIBLE_MEMBER!>private_val<!>)
|
||||
devNull(A.protected_val)
|
||||
devNull(A.<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>protected_val<!>)
|
||||
}
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
open class VeryBase {
|
||||
protected fun baz() {}
|
||||
}
|
||||
|
||||
open class Base {
|
||||
protected fun foo() {
|
||||
bar() // Ok
|
||||
baz() // Ok
|
||||
}
|
||||
|
||||
inner class Inner {
|
||||
fun fromInner() {
|
||||
foo() // Ok
|
||||
bar() // Ok
|
||||
gav() // Ok
|
||||
baz() // Ok
|
||||
}
|
||||
}
|
||||
|
||||
class NestedDerived : Base() {
|
||||
fun fromNestedDerived() {
|
||||
foo() // Ok
|
||||
bar() // Ok
|
||||
gav() // Ok
|
||||
baz() // Ok
|
||||
}
|
||||
}
|
||||
|
||||
companion object : VeryBase() {
|
||||
protected fun bar() {}
|
||||
|
||||
@JvmStatic protected fun gav() {}
|
||||
|
||||
class Nested {
|
||||
fun fromNested() {
|
||||
bar() // Ok
|
||||
gav() // Ok
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Derived : Base() {
|
||||
fun test() {
|
||||
foo() // Ok
|
||||
gav() // Ok
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>bar()<!>
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>baz()<!>
|
||||
}
|
||||
|
||||
inner class DerivedInner {
|
||||
fun fromDerivedInner() {
|
||||
foo() // Ok
|
||||
gav() // Ok
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>bar()<!>
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>baz()<!>
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun test2() {
|
||||
gav() // Ok
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>bar()<!>
|
||||
<!SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC!>baz()<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Other {
|
||||
fun test(base: Base, derived: Derived) {
|
||||
base.<!INVISIBLE_MEMBER!>foo<!>()
|
||||
base.<!UNRESOLVED_REFERENCE!>gav<!>()
|
||||
base.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
derived.<!INVISIBLE_MEMBER!>foo<!>()
|
||||
derived.<!UNRESOLVED_REFERENCE!>gav<!>()
|
||||
derived.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
}
|
||||
}
|
||||
|
||||
fun top(base: Base, derived: Derived) {
|
||||
base.<!INVISIBLE_MEMBER!>foo<!>()
|
||||
base.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
base.<!UNRESOLVED_REFERENCE!>gav<!>()
|
||||
derived.<!INVISIBLE_MEMBER!>foo<!>()
|
||||
derived.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
derived.<!UNRESOLVED_REFERENCE!>gav<!>()
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
package
|
||||
|
||||
public fun top(/*0*/ base: Base, /*1*/ derived: Derived): kotlin.Unit
|
||||
|
||||
public open class Base {
|
||||
public constructor Base()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected 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
|
||||
|
||||
public companion object Companion : VeryBase {
|
||||
private constructor Companion()
|
||||
protected final fun bar(): kotlin.Unit
|
||||
protected final override /*1*/ /*fake_override*/ fun baz(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmStatic() protected final fun gav(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public final class Nested {
|
||||
public constructor Nested()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun fromNested(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public final inner class Inner {
|
||||
public constructor Inner()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun fromInner(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class NestedDerived : Base {
|
||||
public constructor NestedDerived()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public final fun fromNestedDerived(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public final class Derived : Base {
|
||||
public constructor Derived()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public companion object Companion {
|
||||
private constructor Companion()
|
||||
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 final fun test2(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final inner class DerivedInner {
|
||||
public constructor DerivedInner()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun fromDerivedInner(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public final class Other {
|
||||
public constructor Other()
|
||||
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 final fun test(/*0*/ base: Base, /*1*/ derived: Derived): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class VeryBase {
|
||||
public constructor VeryBase()
|
||||
protected final fun baz(): kotlin.Unit
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user