KT-43941 [Sealed interfaces]: preliminary, code cleanup

This commit is contained in:
Andrei Klunnyi
2020-12-21 15:53:33 +01:00
parent acbf382d04
commit 86792131cd
@@ -48,8 +48,7 @@ class CreateKotlinSubClassIntention : SelfTargetingRangeIntention<KtClass>(
if (!element.isInterface() && primaryConstructor != null) { if (!element.isInterface() && primaryConstructor != null) {
val constructors = element.secondaryConstructors + primaryConstructor val constructors = element.secondaryConstructors + primaryConstructor
if (constructors.none { if (constructors.none {
!it.isPrivate() && !it.isPrivate() && it.valueParameters.all { parameter -> parameter.hasDefaultValue() }
it.getValueParameters().all { it.hasDefaultValue() }
}) { }) {
// At this moment we require non-private default constructor // At this moment we require non-private default constructor
// TODO: handle non-private constructors with parameters // TODO: handle non-private constructors with parameters
@@ -103,7 +102,7 @@ class CreateKotlinSubClassIntention : SelfTargetingRangeIntention<KtClass>(
private fun createExternalSubclass(baseClass: KtClass, baseName: String, editor: Editor) { private fun createExternalSubclass(baseClass: KtClass, baseName: String, editor: Editor) {
var container: KtClassOrObject = baseClass var container: KtClassOrObject = baseClass
var name = baseName var name = baseName
var visibility = ModifiersChecker.resolveVisibilityFromModifiers(baseClass, org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC) var visibility = ModifiersChecker.resolveVisibilityFromModifiers(baseClass, DescriptorVisibilities.PUBLIC)
while (!container.isPrivate() && !container.isProtected() && !(container is KtClass && container.isInner())) { while (!container.isPrivate() && !container.isProtected() && !(container is KtClass && container.isInner())) {
val parent = container.containingClassOrObject val parent = container.containingClassOrObject
if (parent != null) { if (parent != null) {
@@ -112,7 +111,7 @@ class CreateKotlinSubClassIntention : SelfTargetingRangeIntention<KtClass>(
container = parent container = parent
name = "$parentName.$name" name = "$parentName.$name"
val parentVisibility = ModifiersChecker.resolveVisibilityFromModifiers(parent, visibility) val parentVisibility = ModifiersChecker.resolveVisibilityFromModifiers(parent, visibility)
if (org.jetbrains.kotlin.descriptors.DescriptorVisibilities.compare(parentVisibility, visibility) ?: 0 < 0) { if (DescriptorVisibilities.compare(parentVisibility, visibility) ?: 0 < 0) {
visibility = parentVisibility visibility = parentVisibility
} }
} }
@@ -176,11 +175,11 @@ class CreateKotlinSubClassIntention : SelfTargetingRangeIntention<KtClass>(
targetName: String, targetName: String,
baseClass: KtClass, baseClass: KtClass,
baseName: String, baseName: String,
defaultVisibility: DescriptorVisibility = ModifiersChecker.resolveVisibilityFromModifiers(baseClass, org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC) defaultVisibility: DescriptorVisibility = ModifiersChecker.resolveVisibilityFromModifiers(baseClass, DescriptorVisibilities.PUBLIC)
): ClassHeaderBuilder { ): ClassHeaderBuilder {
return ClassHeaderBuilder().apply { return ClassHeaderBuilder().apply {
if (!baseClass.isInterface()) { if (!baseClass.isInterface()) {
if (defaultVisibility != org.jetbrains.kotlin.descriptors.DescriptorVisibilities.PUBLIC) { if (defaultVisibility != DescriptorVisibilities.PUBLIC) {
modifier(defaultVisibility.name) modifier(defaultVisibility.name)
} }
if (baseClass.isInner()) { if (baseClass.isInner()) {