FIR: introduce INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER

This commit is contained in:
Mikhail Glukhikh
2021-03-22 12:15:33 +03:00
parent 47d2a914bc
commit 82b8cc333e
16 changed files with 90 additions and 61 deletions
@@ -1,21 +0,0 @@
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// FILE: base/Base.java
package base;
public abstract class Base {
public void foo() {
packagePrivateFoo();
}
/* package-private */ abstract void packagePrivateFoo();
}
// FILE: Impl.kt
package impl
import base.*
class Impl : Base()
fun foo() {
Impl().foo()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +ProhibitInvisibleAbstractMethodsInSuperclasses
// FILE: base/Base.java
package base;
@@ -27,9 +27,9 @@ package impl
import base.*
import intermediate.*
class ImplDirectFromBase : Base()
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER!>class ImplDirectFromBase<!> : Base()
object ImplObjDirectFromBase : Base()
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER!>object ImplObjDirectFromBase<!> : Base()
class ImplDirectFromBaseWithOverride : BaseWithOverride()
@@ -37,7 +37,7 @@ class ImplDirectFromBaseWithOverrid : Base() {
override fun internalFoo(): String = ""
}
class ImplViaIntermediate : Intermediate()
<!INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER!>class ImplViaIntermediate<!> : Intermediate()
fun foo() {
ImplDirectFromBase().foo()
@@ -1,22 +0,0 @@
// !LANGUAGE: -ProhibitInvisibleAbstractMethodsInSuperclasses
// MODULE: base
// FILE: Base.kt
package base
abstract class Base {
fun foo(): String {
return internalFoo()
}
internal abstract fun internalFoo(): String
}
// MODULE: impl(base)
// FILE: Impl.kt
package impl
import base.*
class Impl : Base()
fun foo() {
Impl().foo()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: -ProhibitInvisibleAbstractMethodsInSuperclasses
// MODULE: base
// FILE: Base.kt