diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/KtSymbolWithVisibility.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/KtSymbolWithVisibility.kt index 659422ebc36..644995501b8 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/KtSymbolWithVisibility.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/markers/KtSymbolWithVisibility.kt @@ -12,8 +12,12 @@ interface KtSymbolWithVisibility { sealed class KtSymbolVisibility { object PUBLIC : KtSymbolVisibility() object PRIVATE : KtSymbolVisibility() + object PRIVATE_TO_THIS : KtSymbolVisibility() object PROTECTED : KtSymbolVisibility() object INTERNAL : KtSymbolVisibility() object UNKNOWN : KtSymbolVisibility() object LOCAL : KtSymbolVisibility() -} \ No newline at end of file +} + +fun KtSymbolVisibility.isPrivateOrPrivateToThis(): Boolean = + this == KtSymbolVisibility.PRIVATE || this == KtSymbolVisibility.PRIVATE_TO_THIS \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt index df7d68466cd..d0e8e85dcb2 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightAnnotationClassSymbol.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis internal class FirLightAnnotationClassSymbol( private val classOrObjectSymbol: KtClassOrObjectSymbol, @@ -44,7 +44,7 @@ internal class FirLightAnnotationClassSymbol( analyzeWithSymbolAsContext(classOrObjectSymbol) { val visibleDeclarations = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols() - .filterNot { it is KtFunctionSymbol && it.visibility == KtSymbolVisibility.PRIVATE } + .filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() } .filterNot { it is KtConstructorSymbol } createMethods(visibleDeclarations, result) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt index 2bdd005b60e..8835222c934 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightInterfaceClassSymbol.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassKind import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtFunctionSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.isPrivateOrPrivateToThis internal class FirLightInterfaceClassSymbol( private val classOrObjectSymbol: KtClassOrObjectSymbol, @@ -41,7 +41,7 @@ internal class FirLightInterfaceClassSymbol( analyzeWithSymbolAsContext(classOrObjectSymbol) { val visibleDeclarations = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols() - .filterNot { it is KtFunctionSymbol && it.visibility == KtSymbolVisibility.PRIVATE } + .filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() } createMethods(visibleDeclarations, result) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt index fe59aca4c41..719eae6f76d 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt @@ -24,10 +24,7 @@ import org.jetbrains.kotlin.idea.frontend.api.analyze import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext import org.jetbrains.kotlin.idea.frontend.api.hackyAllowRunningOnEdt import org.jetbrains.kotlin.idea.frontend.api.symbols.* -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtCommonSymbolModality -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolWithMembers -import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtTypeAndAnnotations +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.* import org.jetbrains.kotlin.idea.frontend.api.types.KtClassType import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.lexer.KtTokens @@ -185,7 +182,7 @@ internal fun FirLightClassBase.createMethods( if (declaration is KtKotlinPropertySymbol && declaration.isConst) continue - if (declaration.visibility == KtSymbolVisibility.PRIVATE && + if (declaration.visibility.isPrivateOrPrivateToThis() && declaration.getter?.hasBody == false && declaration.setter?.hasBody == false ) continue @@ -194,7 +191,7 @@ internal fun FirLightClassBase.createMethods( fun KtPropertyAccessorSymbol.needToCreateAccessor(siteTarget: AnnotationUseSiteTarget): Boolean { if (isInline) return false - if (!hasBody && visibility == KtSymbolVisibility.PRIVATE) return false + if (!hasBody && visibility.isPrivateOrPrivateToThis()) return false if (declaration.isHiddenOrSynthetic(siteTarget)) return false if (isHiddenOrSynthetic()) return false return true diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt index 620e4f61fc4..3d467304df0 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt @@ -245,7 +245,8 @@ internal fun KtSymbolVisibility.toPsiVisibilityForMember(isTopLevel: Boolean): S private fun KtSymbolVisibility.toPsiVisibility(isTopLevel: Boolean, forClass: Boolean): String = when (this) { // Top-level private class has PACKAGE_LOCAL visibility in Java // Nested private class has PRIVATE visibility - KtSymbolVisibility.PRIVATE -> if (forClass && isTopLevel) PsiModifier.PACKAGE_LOCAL else PsiModifier.PRIVATE + KtSymbolVisibility.PRIVATE, KtSymbolVisibility.PRIVATE_TO_THIS -> + if (forClass && isTopLevel) PsiModifier.PACKAGE_LOCAL else PsiModifier.PRIVATE KtSymbolVisibility.PROTECTED -> PsiModifier.PROTECTED else -> PsiModifier.PUBLIC } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt index 168f56922d4..b02bb32eca4 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/firSymbolUtils.kt @@ -39,6 +39,7 @@ internal fun Visibility?.getSymbolVisibility(): KtSymbolVisibility = when (this) Visibilities.Public -> KtSymbolVisibility.PUBLIC Visibilities.Protected -> KtSymbolVisibility.PROTECTED Visibilities.Private -> KtSymbolVisibility.PRIVATE + Visibilities.PrivateToThis -> KtSymbolVisibility.PRIVATE_TO_THIS Visibilities.Internal -> KtSymbolVisibility.INTERNAL Visibilities.Local -> KtSymbolVisibility.LOCAL Visibilities.Unknown -> KtSymbolVisibility.UNKNOWN