[IR][tests] Add cases to visibility-related tests where a visibility of an open callable in super class is narrowed
^KT-53608
This commit is contained in:
@@ -9,4 +9,12 @@ open class Container {
|
||||
protected fun protectedToPublicFunction() = "Container.protectedToPublicFunction.v1"
|
||||
protected fun protectedToInternalFunction() = "Container.protectedToInternalFunction.v1"
|
||||
protected fun protectedToPrivateFunction() = "Container.protectedToPrivateFunction.v1"
|
||||
|
||||
public open fun publicToProtectedOverriddenFunction() = "Container.publicToProtectedOverriddenFunction.v1"
|
||||
public open fun publicToInternalOverriddenFunction() = "Container.publicToInternalOverriddenFunction.v1"
|
||||
public open fun publicToPrivateOverriddenFunction() = "Container.publicToPrivateOverriddenFunction.v1"
|
||||
|
||||
protected open fun protectedToPublicOverriddenFunction() = "Container.protectedToPublicOverriddenFunction.v1"
|
||||
protected open fun protectedToInternalOverriddenFunction() = "Container.protectedToInternalOverriddenFunction.v1"
|
||||
protected open fun protectedToPrivateOverriddenFunction() = "Container.protectedToPrivateOverriddenFunction.v1"
|
||||
}
|
||||
|
||||
@@ -9,4 +9,12 @@ open class Container {
|
||||
public fun protectedToPublicFunction() = "Container.protectedToPublicFunction.v2"
|
||||
internal fun protectedToInternalFunction() = "Container.protectedToInternalFunction.v2"
|
||||
private fun protectedToPrivateFunction() = "Container.protectedToPrivateFunction.v2"
|
||||
|
||||
protected open fun publicToProtectedOverriddenFunction() = "Container.publicToProtectedOverriddenFunction.v2"
|
||||
internal open fun publicToInternalOverriddenFunction() = "Container.publicToInternalOverriddenFunction.v2"
|
||||
private /*open*/ fun publicToPrivateOverriddenFunction() = "Container.publicToPrivateOverriddenFunction.v2"
|
||||
|
||||
public open fun protectedToPublicOverriddenFunction() = "Container.protectedToPublicOverriddenFunction.v2"
|
||||
internal open fun protectedToInternalOverriddenFunction() = "Container.protectedToInternalOverriddenFunction.v2"
|
||||
private /*open*/ fun protectedToPrivateOverriddenFunction() = "Container.protectedToPrivateOverriddenFunction.v2"
|
||||
}
|
||||
|
||||
@@ -8,4 +8,18 @@ class ContainerImpl : Container() {
|
||||
fun protectedToPublicFunctionAccess() = protectedToPublicFunction()
|
||||
fun protectedToInternalFunctionAccess() = protectedToInternalFunction()
|
||||
fun protectedToPrivateFunctionAccess() = protectedToPrivateFunction()
|
||||
|
||||
// Overridden functions with changed visibility:
|
||||
override fun publicToProtectedOverriddenFunction() = "ContainerImpl.publicToProtectedOverriddenFunction"
|
||||
override fun publicToInternalOverriddenFunction() = "ContainerImpl.publicToInternalOverriddenFunction"
|
||||
override fun publicToPrivateOverriddenFunction() = "ContainerImpl.publicToPrivateOverriddenFunction"
|
||||
|
||||
override fun protectedToPublicOverriddenFunction() = "ContainerImpl.protectedToPublicOverriddenFunction"
|
||||
override fun protectedToInternalOverriddenFunction() = "ContainerImpl.protectedToInternalOverriddenFunction"
|
||||
override fun protectedToPrivateOverriddenFunction() = "ContainerImpl.protectedToPrivateOverriddenFunction"
|
||||
|
||||
// As far as protected members can't be accessed outside of the class hierarchy, we need special accessors.
|
||||
fun protectedToPublicOverriddenFunctionAccess() = protectedToPublicOverriddenFunction()
|
||||
fun protectedToInternalOverriddenFunctionAccess() = protectedToInternalOverriddenFunction()
|
||||
fun protectedToPrivateOverriddenFunctionAccess() = protectedToPrivateOverriddenFunction()
|
||||
}
|
||||
|
||||
@@ -13,4 +13,10 @@ fun box() = abiTest {
|
||||
expectSuccess("Container.protectedToPublicFunction.v2") { c.protectedToPublicFunctionAccess() }
|
||||
expectFailure(prefixed("function protectedToInternalFunction can not be called")) { c.protectedToInternalFunctionAccess() }
|
||||
expectFailure(prefixed("function protectedToPrivateFunction can not be called")) { c.protectedToPrivateFunctionAccess() }
|
||||
expectSuccess("ContainerImpl.publicToProtectedOverriddenFunction") { c.publicToProtectedOverriddenFunction() }
|
||||
expectSuccess("ContainerImpl.publicToInternalOverriddenFunction") { c.publicToInternalOverriddenFunction() }
|
||||
expectSuccess("ContainerImpl.publicToPrivateOverriddenFunction") { c.publicToPrivateOverriddenFunction() }
|
||||
expectSuccess("ContainerImpl.protectedToPublicOverriddenFunction") { c.protectedToPublicOverriddenFunctionAccess() }
|
||||
expectSuccess("ContainerImpl.protectedToInternalOverriddenFunction") { c.protectedToInternalOverriddenFunctionAccess() }
|
||||
expectSuccess("ContainerImpl.protectedToPrivateOverriddenFunction") { c.protectedToPrivateOverriddenFunctionAccess() }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user