From 6ee169c01e33ac1db2f23318bacbde1d05f106f7 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 7 Apr 2021 14:27:32 +0300 Subject: [PATCH] Rename EffectiveVisibility.Private to PrivateInClass --- .../kotlin/fir/EffectiveVisibilityUtils.kt | 2 +- .../resolve/ExposedVisibilityChecker.kt | 2 +- .../kotlin/descriptors/EffectiveVisibility.kt | 33 ++++++++++--------- .../descriptors/EffectiveVisibilityUtils.kt | 4 +-- .../MemberVisibilityCanBePrivateInspection.kt | 2 +- .../exposedParameterType.kt | 2 +- .../decreaseVisibility/exposedReceiverType.kt | 2 +- .../generators/AllOpenNestedClassGenerator.kt | 2 +- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt index 0fb252307c3..10abd0c4b43 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt @@ -24,7 +24,7 @@ fun Visibility.toEffectiveVisibility( ): EffectiveVisibility { customEffectiveVisibility()?.let { return it } return when (this.normalize()) { - Visibilities.Private, Visibilities.PrivateToThis, Visibilities.InvisibleFake -> EffectiveVisibility.Private + Visibilities.Private, Visibilities.PrivateToThis, Visibilities.InvisibleFake -> EffectiveVisibility.PrivateInClass Visibilities.Protected -> EffectiveVisibility.Protected(owner) Visibilities.Internal -> when (!checkPublishedApi /*|| !owner.isPublishedApi()*/) { // TODO true -> EffectiveVisibility.Internal diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt index bc35c3e4453..373c34e1355 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExposedVisibilityChecker.kt @@ -97,7 +97,7 @@ class ExposedVisibilityChecker( ): Boolean { var functionVisibility = functionDescriptor.effectiveVisibility(visibility) if (functionDescriptor is ConstructorDescriptor && functionDescriptor.constructedClass.isSealed() && function.visibilityModifier() == null) { - functionVisibility = EffectiveVisibility.Private + functionVisibility = EffectiveVisibility.PrivateInClass } var result = true if (function !is KtConstructor<*>) { diff --git a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/EffectiveVisibility.kt b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/EffectiveVisibility.kt index f80962a2685..57b12af1bd6 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/EffectiveVisibility.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/EffectiveVisibility.kt @@ -26,29 +26,30 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals // | // PrivateInFile // | - // Private = Local + // PrivateInClass = Local - - object Private : EffectiveVisibility("private", privateApi = true) { + // Private class (interface) member + object PrivateInClass : EffectiveVisibility("private-in-class", privateApi = true) { override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = if (this == other || Local == other) Permissiveness.SAME else Permissiveness.LESS override fun toVisibility(): Visibility = Visibilities.Private } - // Effectively same as Private + // Effectively same as PrivateInClass object Local : EffectiveVisibility("local") { override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = - if (this == other || Private == other) Permissiveness.SAME else Permissiveness.LESS + if (this == other || PrivateInClass == other) Permissiveness.SAME else Permissiveness.LESS override fun toVisibility(): Visibility = Visibilities.Local } + // Private with File container object PrivateInFile : EffectiveVisibility("private-in-file", privateApi = true) { override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { this -> Permissiveness.SAME - Private, Local -> Permissiveness.MORE + PrivateInClass, Local -> Permissiveness.MORE else -> Permissiveness.LESS } @@ -68,7 +69,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { Public -> Permissiveness.LESS - Private, PrivateInFile, Local, InternalProtectedBound, is InternalProtected -> Permissiveness.MORE + PrivateInClass, PrivateInFile, Local, InternalProtectedBound, is InternalProtected -> Permissiveness.MORE is InternalOrPackage -> Permissiveness.SAME ProtectedBound, is Protected -> Permissiveness.UNKNOWN } @@ -76,7 +77,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun lowerBound(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): EffectiveVisibility = when (other) { Public -> this - Private, PrivateInFile, Local, InternalProtectedBound, is InternalOrPackage, is InternalProtected -> other + PrivateInClass, PrivateInFile, Local, InternalProtectedBound, is InternalOrPackage, is InternalProtected -> other is Protected -> InternalProtected(other.containerTypeConstructor) ProtectedBound -> InternalProtectedBound } @@ -101,7 +102,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { Public -> Permissiveness.LESS - Private, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> Permissiveness.MORE + PrivateInClass, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> Permissiveness.MORE is Protected -> containerRelation(containerTypeConstructor, other.containerTypeConstructor, typeCheckerContextProvider) is InternalProtected -> when (containerRelation( containerTypeConstructor, @@ -118,7 +119,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun lowerBound(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): EffectiveVisibility = when (other) { Public -> this - Private, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> other + PrivateInClass, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> other is Protected -> when (relation(other, typeCheckerContextProvider)) { Permissiveness.SAME, Permissiveness.MORE -> this Permissiveness.LESS -> other @@ -139,7 +140,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { Public, is Protected -> Permissiveness.LESS - Private, PrivateInFile, Local, InternalProtectedBound -> Permissiveness.MORE + PrivateInClass, PrivateInFile, Local, InternalProtectedBound -> Permissiveness.MORE ProtectedBound -> Permissiveness.SAME is InternalOrPackage, is InternalProtected -> Permissiveness.UNKNOWN } @@ -147,7 +148,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun lowerBound(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): EffectiveVisibility = when (other) { Public, is Protected -> this - Private, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> other + PrivateInClass, PrivateInFile, Local, ProtectedBound, InternalProtectedBound -> other is InternalOrPackage, is InternalProtected -> InternalProtectedBound } @@ -168,7 +169,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { Public, is InternalOrPackage -> Permissiveness.LESS - Private, PrivateInFile, Local, InternalProtectedBound -> Permissiveness.MORE + PrivateInClass, PrivateInFile, Local, InternalProtectedBound -> Permissiveness.MORE is InternalProtected -> containerRelation( containerTypeConstructor, other.containerTypeConstructor, @@ -189,7 +190,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun lowerBound(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): EffectiveVisibility = when (other) { Public, is InternalOrPackage -> this - Private, PrivateInFile, Local, InternalProtectedBound -> other + PrivateInClass, PrivateInFile, Local, InternalProtectedBound -> other is Protected, is InternalProtected -> when (relation(other, typeCheckerContextProvider)) { Permissiveness.SAME, Permissiveness.MORE -> this Permissiveness.LESS -> other @@ -206,7 +207,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals override fun relation(other: EffectiveVisibility, typeCheckerContextProvider: TypeCheckerProviderContext): Permissiveness = when (other) { Public, is Protected, is InternalProtected, ProtectedBound, is InternalOrPackage -> Permissiveness.LESS - Private, PrivateInFile, Local -> Permissiveness.MORE + PrivateInClass, PrivateInFile, Local -> Permissiveness.MORE InternalProtectedBound -> Permissiveness.SAME } @@ -228,7 +229,7 @@ sealed class EffectiveVisibility(val name: String, val publicApi: Boolean = fals when (relation(other, typeCheckerContextProvider)) { Permissiveness.SAME, Permissiveness.LESS -> this Permissiveness.MORE -> other - Permissiveness.UNKNOWN -> Private + Permissiveness.UNKNOWN -> PrivateInClass } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/EffectiveVisibilityUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/EffectiveVisibilityUtils.kt index d7ea0853275..c9193ea8993 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/EffectiveVisibilityUtils.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/EffectiveVisibilityUtils.kt @@ -20,10 +20,10 @@ fun DescriptorVisibility.effectiveVisibility( private fun DescriptorVisibility.forVisibility(descriptor: DeclarationDescriptor, checkPublishedApi: Boolean = false): EffectiveVisibility = when (this) { - DescriptorVisibilities.PRIVATE_TO_THIS, DescriptorVisibilities.INVISIBLE_FAKE -> EffectiveVisibility.Private + DescriptorVisibilities.PRIVATE_TO_THIS, DescriptorVisibilities.INVISIBLE_FAKE -> EffectiveVisibility.PrivateInClass DescriptorVisibilities.PRIVATE -> if (descriptor is ClassDescriptor && descriptor.containingDeclaration is PackageFragmentDescriptor - ) EffectiveVisibility.PrivateInFile else EffectiveVisibility.Private + ) EffectiveVisibility.PrivateInFile else EffectiveVisibility.PrivateInClass DescriptorVisibilities.PROTECTED -> EffectiveVisibility.Protected( (descriptor.containingDeclaration as? ClassDescriptor)?.defaultType?.constructor ) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt index 034c4ad8e6d..9522e7fb084 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanBePrivateInspection.kt @@ -86,7 +86,7 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() { val descriptor = (declaration.toDescriptor() as? DeclarationDescriptorWithVisibility) ?: return false when (descriptor.effectiveVisibility()) { - EffectiveVisibility.Private, EffectiveVisibility.PrivateInFile, EffectiveVisibility.Local -> return false + EffectiveVisibility.PrivateInClass, EffectiveVisibility.PrivateInFile, EffectiveVisibility.Local -> return false } val entryPointsManager = EntryPointsManager.getInstance(declaration.project) as EntryPointsManagerBase diff --git a/idea/testData/quickfix/decreaseVisibility/exposedParameterType.kt b/idea/testData/quickfix/decreaseVisibility/exposedParameterType.kt index 54bdcb5bfc9..8ab35f879dc 100644 --- a/idea/testData/quickfix/decreaseVisibility/exposedParameterType.kt +++ b/idea/testData/quickfix/decreaseVisibility/exposedParameterType.kt @@ -4,7 +4,7 @@ // ACTION: Make 'Nested' internal // ACTION: Make 'Nested' public // ACTION: Remove parameter 'arg' -// ERROR: 'internal' function exposes its 'private' parameter type argument Nested +// ERROR: 'internal' function exposes its 'private-in-class' parameter type argument Nested // ERROR: Cannot access 'Nested': it is private in 'Outer' class Outer { diff --git a/idea/testData/quickfix/decreaseVisibility/exposedReceiverType.kt b/idea/testData/quickfix/decreaseVisibility/exposedReceiverType.kt index 22e1ff2d2bd..6c82a3fd5d7 100644 --- a/idea/testData/quickfix/decreaseVisibility/exposedReceiverType.kt +++ b/idea/testData/quickfix/decreaseVisibility/exposedReceiverType.kt @@ -3,7 +3,7 @@ // ACTION: Introduce import alias // ACTION: Make 'Private' protected // ACTION: Make 'Private' public -// ERROR: 'protected (in My)' member exposes its 'private' receiver type argument Private +// ERROR: 'protected (in My)' member exposes its 'private-in-class' receiver type argument Private class Receiver diff --git a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenNestedClassGenerator.kt b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenNestedClassGenerator.kt index 5218d157232..15403983c82 100644 --- a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenNestedClassGenerator.kt +++ b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenNestedClassGenerator.kt @@ -43,7 +43,7 @@ class AllOpenNestedClassGenerator(session: FirSession) : FirDeclarationGeneratio status = FirResolvedDeclarationStatusImpl( Visibilities.Private, Modality.FINAL, - EffectiveVisibility.Private + EffectiveVisibility.PrivateInClass ).apply { isInner = true }