S/LC: fix default visibility of constructor of sealed class
This commit is contained in:
committed by
Ilya Kirillov
parent
5225c51a5a
commit
3eb68a6ee8
+2
-1
@@ -154,7 +154,8 @@ context(KtAnalysisSession)
|
|||||||
private fun SymbolLightClassBase.defaultConstructor(): KtLightMethod {
|
private fun SymbolLightClassBase.defaultConstructor(): KtLightMethod {
|
||||||
val classOrObject = kotlinOrigin
|
val classOrObject = kotlinOrigin
|
||||||
val visibility = when {
|
val visibility = when {
|
||||||
classOrObject is KtObjectDeclaration || classOrObject?.hasModifier(SEALED_KEYWORD) == true || isEnum -> PsiModifier.PRIVATE
|
classOrObject is KtObjectDeclaration || isEnum -> PsiModifier.PRIVATE
|
||||||
|
classOrObject?.hasModifier(SEALED_KEYWORD) == true -> PsiModifier.PROTECTED
|
||||||
classOrObject is KtEnumEntry -> PsiModifier.PACKAGE_LOCAL
|
classOrObject is KtEnumEntry -> PsiModifier.PACKAGE_LOCAL
|
||||||
else -> PsiModifier.PUBLIC
|
else -> PsiModifier.PUBLIC
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -443,7 +443,8 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
private fun defaultConstructor(): KtUltraLightMethod {
|
private fun defaultConstructor(): KtUltraLightMethod {
|
||||||
val visibility =
|
val visibility =
|
||||||
when {
|
when {
|
||||||
classOrObject is KtObjectDeclaration || classOrObject.hasModifier(SEALED_KEYWORD) || isEnum -> PsiModifier.PRIVATE
|
classOrObject is KtObjectDeclaration || isEnum -> PsiModifier.PRIVATE
|
||||||
|
classOrObject.hasModifier(SEALED_KEYWORD) -> PsiModifier.PROTECTED
|
||||||
classOrObject is KtEnumEntry -> PsiModifier.PACKAGE_LOCAL
|
classOrObject is KtEnumEntry -> PsiModifier.PACKAGE_LOCAL
|
||||||
else -> PsiModifier.PUBLIC
|
else -> PsiModifier.PUBLIC
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -302,8 +302,9 @@ internal class UltraLightMembersCreator(
|
|||||||
if (forcePrivate || declaration.isPrivate() || accessedProperty?.isPrivate() == true) {
|
if (forcePrivate || declaration.isPrivate() || accessedProperty?.isPrivate() == true) {
|
||||||
return name == PsiModifier.PRIVATE
|
return name == PsiModifier.PRIVATE
|
||||||
}
|
}
|
||||||
if (declaration.hasModifier(PROTECTED_KEYWORD) || accessedProperty
|
if (declaration.hasModifier(PROTECTED_KEYWORD) ||
|
||||||
?.hasModifier(PROTECTED_KEYWORD) == true
|
accessedProperty?.hasModifier(PROTECTED_KEYWORD) == true ||
|
||||||
|
(declaration is KtConstructor<*> && containingClassIsSealed)
|
||||||
) {
|
) {
|
||||||
return name == PsiModifier.PROTECTED
|
return name == PsiModifier.PROTECTED
|
||||||
}
|
}
|
||||||
@@ -335,7 +336,7 @@ internal class UltraLightMembersCreator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtDeclaration.isPrivate() =
|
private fun KtDeclaration.isPrivate() =
|
||||||
hasModifier(PRIVATE_KEYWORD) || this is KtConstructor<*> && containingClassIsSealed || isInlineOnly()
|
hasModifier(PRIVATE_KEYWORD) || isInlineOnly()
|
||||||
|
|
||||||
private fun KtDeclaration.isInlineOnly(): Boolean {
|
private fun KtDeclaration.isInlineOnly(): Boolean {
|
||||||
if (this !is KtCallableDeclaration || !hasModifier(INLINE_KEYWORD)) return false
|
if (this !is KtCallableDeclaration || !hasModifier(INLINE_KEYWORD)) return false
|
||||||
|
|||||||
Reference in New Issue
Block a user