Calls to non-@JvmStatic protected members of companion objects from subclasses are now errors (unsupported yet)
This commit is contained in:
+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<!>()
|
||||
}
|
||||
Reference in New Issue
Block a user