KT-43941 [Sealed interfaces]: preliminary, code cleanup
This commit is contained in:
@@ -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()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user