Minor: refactoring

This commit is contained in:
Dmitry Gridin
2019-05-16 17:13:23 +07:00
parent 1097bc76af
commit a9ed042199
2 changed files with 27 additions and 27 deletions
@@ -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")
@@ -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)
}
}
}