diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt index 0ce8a2e39d1..1c1900b952c 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt @@ -40,9 +40,12 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.findDocComment.findDocComment import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier -import org.jetbrains.kotlin.renderer.* +import org.jetbrains.kotlin.renderer.ClassifierNamePolicy +import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.withOptions import org.jetbrains.kotlin.renderer.DescriptorRendererModifier.* +import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy +import org.jetbrains.kotlin.renderer.render import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker import org.jetbrains.kotlin.resolve.descriptorUtil.setSingleOverridden import org.jetbrains.kotlin.util.findCallableMemberBySignature @@ -189,8 +192,7 @@ fun OverrideMemberChooserObject.generateMember( } if (copyDoc) { - val superDeclaration = DescriptorToSourceUtilsIde.getAnyDeclaration(project, descriptor)?.navigationElement - val kDoc = when (superDeclaration) { + val kDoc = when (val superDeclaration = DescriptorToSourceUtilsIde.getAnyDeclaration(project, descriptor)?.navigationElement) { is KtDeclaration -> findDocComment(superDeclaration) is PsiDocCommentOwner -> { @@ -348,8 +350,7 @@ fun generateUnsupportedOrSuperCall( bodyType: OverrideMemberChooserObject.BodyType, canBeEmpty: Boolean = true ): String { - val effectiveBodyType = if (!canBeEmpty && bodyType == EMPTY_OR_TEMPLATE) FROM_TEMPLATE else bodyType - when (effectiveBodyType) { + when (if (!canBeEmpty && bodyType == EMPTY_OR_TEMPLATE) FROM_TEMPLATE else bodyType) { EMPTY_OR_TEMPLATE -> return "" FROM_TEMPLATE -> { val templateKind = if (descriptor is FunctionDescriptor) TemplateKind.FUNCTION else TemplateKind.PROPERTY_INITIALIZER @@ -362,7 +363,7 @@ fun generateUnsupportedOrSuperCall( ) } else -> return buildString { - if (bodyType is OverrideMemberChooserObject.BodyType.Delegate) { + if (bodyType is Delegate) { append(bodyType.receiverName) } else { append("super") diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/DescriptorMemberChooserObject.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/DescriptorMemberChooserObject.kt index 79447062cda..37995fe9ad0 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/DescriptorMemberChooserObject.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/DescriptorMemberChooserObject.kt @@ -38,9 +38,13 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import javax.swing.Icon open class DescriptorMemberChooserObject( - psiElement: PsiElement, - open val descriptor: DeclarationDescriptor -) : PsiElementMemberChooserObject(psiElement, DescriptorMemberChooserObject.getText(descriptor), DescriptorMemberChooserObject.getIcon(psiElement, descriptor)), ClassMemberWithElement { + psiElement: PsiElement, + open val descriptor: DeclarationDescriptor +) : PsiElementMemberChooserObject( + psiElement, + getText(descriptor), + getIcon(psiElement, descriptor) +), ClassMemberWithElement { override fun getParentNodeDelegate(): MemberChooserObject { val parent = descriptor.containingDeclaration ?: error("No parent for $descriptor") @@ -48,8 +52,7 @@ open class DescriptorMemberChooserObject( val declaration = if (psiElement is KtDeclaration) { // kotlin PsiTreeUtil.getStubOrPsiParentOfType(psiElement, KtNamedDeclaration::class.java) ?: PsiTreeUtil.getStubOrPsiParentOfType(psiElement, KtFile::class.java) - } - else { // java or compiled + } else { // java or compiled (psiElement as PsiMember).containingClass } ?: error("No parent for $psiElement") @@ -80,23 +83,19 @@ open class DescriptorMemberChooserObject( MEMBER_RENDERER.render(descriptor) } - fun getIcon(declaration: PsiElement?, descriptor: DeclarationDescriptor): Icon? { - if (declaration != null && declaration.isValid) { - val isClass = declaration is PsiClass || declaration is KtClass - val flags = if (isClass) 0 else Iconable.ICON_FLAG_VISIBILITY - return if (declaration is KtDeclaration) { - // kotlin declaration - // visibility and abstraction better detect by a descriptor - KotlinDescriptorIconProvider.getIcon(descriptor, declaration, flags) - } - else { - // it is better to show java icons for java code - declaration.getIcon(flags) - } - } - else { - return KotlinDescriptorIconProvider.getIcon(descriptor, declaration, 0) + fun getIcon(declaration: PsiElement?, descriptor: DeclarationDescriptor): Icon? = if (declaration != null && declaration.isValid) { + val isClass = declaration is PsiClass || declaration is KtClass + val flags = if (isClass) 0 else Iconable.ICON_FLAG_VISIBILITY + if (declaration is KtDeclaration) { + // kotlin declaration + // visibility and abstraction better detect by a descriptor + KotlinDescriptorIconProvider.getIcon(descriptor, declaration, flags) + } else { + // it is better to show java icons for java code + declaration.getIcon(flags) } + } else { + KotlinDescriptorIconProvider.getIcon(descriptor, declaration, 0) } } }