Only private constructors for sealed / enum classes #KT-12377 Fixed
Also #KT-8497 Fixed
This commit is contained in:
@@ -198,18 +198,21 @@ fun KtModifierListOwner.setVisibility(visibilityModifier: KtModifierKeywordToken
|
||||
addModifier(visibilityModifier)
|
||||
}
|
||||
|
||||
fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? {
|
||||
val defaultVisibilityKeyword = if (hasModifier(KtTokens.OVERRIDE_KEYWORD)) {
|
||||
(resolveToDescriptor() as? CallableMemberDescriptor)
|
||||
?.overriddenDescriptors
|
||||
?.let { OverridingUtil.findMaxVisibility(it) }
|
||||
?.toKeywordToken()
|
||||
}
|
||||
else {
|
||||
KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
return defaultVisibilityKeyword
|
||||
}
|
||||
fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? =
|
||||
if (this is KtConstructor<*>) {
|
||||
val klass = getContainingClassOrObject()
|
||||
if (klass is KtClass && (klass.isEnum() || klass.isSealed())) KtTokens.PRIVATE_KEYWORD
|
||||
else KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
else if (hasModifier(KtTokens.OVERRIDE_KEYWORD)) {
|
||||
(resolveToDescriptor() as? CallableMemberDescriptor)
|
||||
?.overriddenDescriptors
|
||||
?.let { OverridingUtil.findMaxVisibility(it) }
|
||||
?.toKeywordToken()
|
||||
}
|
||||
else {
|
||||
KtTokens.DEFAULT_VISIBILITY_KEYWORD
|
||||
}
|
||||
|
||||
fun KtModifierListOwner.canBePrivate(): Boolean {
|
||||
if (modifierList?.hasModifier(KtTokens.ABSTRACT_KEYWORD) ?: false) return false
|
||||
|
||||
Reference in New Issue
Block a user