[Commonizer] Drop useless "allowPrivate" flag in VisibilityCommonizer
This commit is contained in:
+1
-1
@@ -43,7 +43,7 @@ private class TypeAliasLiftingUpCommonizer(cache: CirClassifiersCache) : Abstrac
|
|||||||
private val typeParameters = TypeParameterListCommonizer(cache)
|
private val typeParameters = TypeParameterListCommonizer(cache)
|
||||||
private val underlyingType = TypeCommonizer(cache)
|
private val underlyingType = TypeCommonizer(cache)
|
||||||
private lateinit var expandedType: CirSimpleType
|
private lateinit var expandedType: CirSimpleType
|
||||||
private val visibility = VisibilityCommonizer.lowering(allowPrivate = false)
|
private val visibility = VisibilityCommonizer.lowering()
|
||||||
|
|
||||||
override fun commonizationResult(): CirTypeAlias = CirTypeAliasFactory.create(
|
override fun commonizationResult(): CirTypeAlias = CirTypeAliasFactory.create(
|
||||||
annotations = emptyList(),
|
annotations = emptyList(),
|
||||||
|
|||||||
+6
-6
@@ -10,10 +10,10 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunctionOrProperty
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirFunctionOrProperty
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirHasVisibility
|
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirHasVisibility
|
||||||
|
|
||||||
abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commonizer<CirHasVisibility, Visibility> {
|
abstract class VisibilityCommonizer : Commonizer<CirHasVisibility, Visibility> {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun lowering(allowPrivate: Boolean = false): VisibilityCommonizer = LoweringVisibilityCommonizer(allowPrivate)
|
fun lowering(): VisibilityCommonizer = LoweringVisibilityCommonizer()
|
||||||
fun equalizing(): VisibilityCommonizer = EqualizingVisibilityCommonizer()
|
fun equalizing(): VisibilityCommonizer = EqualizingVisibilityCommonizer()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commoni
|
|||||||
return false
|
return false
|
||||||
|
|
||||||
val nextVisibility = next.visibility
|
val nextVisibility = next.visibility
|
||||||
if (!allowPrivate && Visibilities.isPrivate(nextVisibility) || !canBeCommonized(next)) {
|
if (Visibilities.isPrivate(nextVisibility) || !canBeCommonized(next)) {
|
||||||
temp = Visibilities.UNKNOWN
|
temp = Visibilities.UNKNOWN
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -42,10 +42,10 @@ abstract class VisibilityCommonizer(private val allowPrivate: Boolean) : Commoni
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Choose the lowest possible visibility ignoring private for all given member descriptors, if possible.
|
* Choose the lowest possible visibility ignoring private for all given member descriptors.
|
||||||
* If at least one member descriptor is virtual, then the commonizer succeeds only if all visibilities are equal.
|
* If at least one member descriptor is virtual, then the commonizer succeeds only if all visibilities are equal.
|
||||||
*/
|
*/
|
||||||
private class LoweringVisibilityCommonizer(allowPrivate: Boolean) : VisibilityCommonizer(allowPrivate) {
|
private class LoweringVisibilityCommonizer : VisibilityCommonizer() {
|
||||||
private var atLeastOneVirtualCallableMet = false
|
private var atLeastOneVirtualCallableMet = false
|
||||||
private var atLeastTwoVisibilitiesMet = false
|
private var atLeastTwoVisibilitiesMet = false
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ private class LoweringVisibilityCommonizer(allowPrivate: Boolean) : VisibilityCo
|
|||||||
/**
|
/**
|
||||||
* Make sure that visibilities of all member descriptors are equal and are not private according to [Visibilities.isPrivate].
|
* Make sure that visibilities of all member descriptors are equal and are not private according to [Visibilities.isPrivate].
|
||||||
*/
|
*/
|
||||||
private class EqualizingVisibilityCommonizer : VisibilityCommonizer(false) {
|
private class EqualizingVisibilityCommonizer : VisibilityCommonizer() {
|
||||||
override fun canBeCommonized(next: CirHasVisibility) = true
|
override fun canBeCommonized(next: CirHasVisibility) = true
|
||||||
|
|
||||||
override fun getNext(current: Visibility, next: Visibility) =
|
override fun getNext(current: Visibility, next: Visibility) =
|
||||||
|
|||||||
+3
-36
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.unsupported
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
abstract class LoweringVisibilityCommonizerTest(
|
abstract class LoweringVisibilityCommonizerTest(
|
||||||
private val allowPrivate: Boolean,
|
|
||||||
private val areMembersVirtual: Boolean
|
private val areMembersVirtual: Boolean
|
||||||
) : AbstractCommonizerTest<CirHasVisibility, Visibility>() {
|
) : AbstractCommonizerTest<CirHasVisibility, Visibility>() {
|
||||||
|
|
||||||
@@ -43,7 +42,7 @@ abstract class LoweringVisibilityCommonizerTest(
|
|||||||
PUBLIC.toMock(), LOCAL.toMock()
|
PUBLIC.toMock(), LOCAL.toMock()
|
||||||
)
|
)
|
||||||
|
|
||||||
final override fun createCommonizer() = VisibilityCommonizer.lowering(allowPrivate = allowPrivate)
|
final override fun createCommonizer() = VisibilityCommonizer.lowering()
|
||||||
|
|
||||||
protected fun Visibility.toMock() = object : CirFunctionOrProperty {
|
protected fun Visibility.toMock() = object : CirFunctionOrProperty {
|
||||||
override val annotations get() = unsupported()
|
override val annotations get() = unsupported()
|
||||||
@@ -59,39 +58,7 @@ abstract class LoweringVisibilityCommonizerTest(
|
|||||||
override val kind get() = unsupported()
|
override val kind get() = unsupported()
|
||||||
}
|
}
|
||||||
|
|
||||||
class PrivateMembers : LoweringVisibilityCommonizerTest(true, false) {
|
class NonVirtualMembers : LoweringVisibilityCommonizerTest(false) {
|
||||||
|
|
||||||
@Test
|
|
||||||
fun publicAndProtected() = doTestSuccess(
|
|
||||||
expected = PROTECTED,
|
|
||||||
PUBLIC.toMock(), PROTECTED.toMock(), PUBLIC.toMock()
|
|
||||||
)
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun publicAndInternal() = doTestSuccess(
|
|
||||||
expected = INTERNAL,
|
|
||||||
PUBLIC.toMock(), INTERNAL.toMock(), PUBLIC.toMock()
|
|
||||||
)
|
|
||||||
|
|
||||||
@Test(expected = IllegalCommonizerStateException::class)
|
|
||||||
fun publicAndInternalAndProtected() = doTestFailure(
|
|
||||||
PUBLIC.toMock(), INTERNAL.toMock(), PROTECTED.toMock()
|
|
||||||
)
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun publicAndInternalAndPrivate() = doTestSuccess(
|
|
||||||
expected = PRIVATE,
|
|
||||||
PUBLIC.toMock(), INTERNAL.toMock(), PRIVATE.toMock()
|
|
||||||
)
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun privateOnly() = doTestSuccess(
|
|
||||||
expected = PRIVATE,
|
|
||||||
PRIVATE.toMock(), PRIVATE.toMock(), PRIVATE.toMock()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
class NonVirtualMembers : LoweringVisibilityCommonizerTest(false, false) {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun publicAndProtected() = doTestSuccess(
|
fun publicAndProtected() = doTestSuccess(
|
||||||
@@ -121,7 +88,7 @@ abstract class LoweringVisibilityCommonizerTest(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
class VirtualMembers : LoweringVisibilityCommonizerTest(false, true) {
|
class VirtualMembers : LoweringVisibilityCommonizerTest(true) {
|
||||||
|
|
||||||
@Test(expected = IllegalCommonizerStateException::class)
|
@Test(expected = IllegalCommonizerStateException::class)
|
||||||
fun publicAndProtected1() = doTestFailure(
|
fun publicAndProtected1() = doTestFailure(
|
||||||
|
|||||||
Reference in New Issue
Block a user