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 {
|
||||
val classOrObject = kotlinOrigin
|
||||
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
|
||||
else -> PsiModifier.PUBLIC
|
||||
}
|
||||
|
||||
@@ -443,7 +443,8 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
||||
private fun defaultConstructor(): KtUltraLightMethod {
|
||||
val visibility =
|
||||
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
|
||||
else -> PsiModifier.PUBLIC
|
||||
}
|
||||
|
||||
+4
-3
@@ -302,8 +302,9 @@ internal class UltraLightMembersCreator(
|
||||
if (forcePrivate || declaration.isPrivate() || accessedProperty?.isPrivate() == true) {
|
||||
return name == PsiModifier.PRIVATE
|
||||
}
|
||||
if (declaration.hasModifier(PROTECTED_KEYWORD) || accessedProperty
|
||||
?.hasModifier(PROTECTED_KEYWORD) == true
|
||||
if (declaration.hasModifier(PROTECTED_KEYWORD) ||
|
||||
accessedProperty?.hasModifier(PROTECTED_KEYWORD) == true ||
|
||||
(declaration is KtConstructor<*> && containingClassIsSealed)
|
||||
) {
|
||||
return name == PsiModifier.PROTECTED
|
||||
}
|
||||
@@ -335,7 +336,7 @@ internal class UltraLightMembersCreator(
|
||||
}
|
||||
|
||||
private fun KtDeclaration.isPrivate() =
|
||||
hasModifier(PRIVATE_KEYWORD) || this is KtConstructor<*> && containingClassIsSealed || isInlineOnly()
|
||||
hasModifier(PRIVATE_KEYWORD) || isInlineOnly()
|
||||
|
||||
private fun KtDeclaration.isInlineOnly(): Boolean {
|
||||
if (this !is KtCallableDeclaration || !hasModifier(INLINE_KEYWORD)) return false
|
||||
|
||||
Reference in New Issue
Block a user