Override/implement members dialog: no qualified type names in signatures but qualified owner class names (+ moved a method)
This commit is contained in:
@@ -25,8 +25,8 @@ import com.intellij.psi.codeStyle.CodeStyleManager
|
|||||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil
|
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.renderName
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
import java.util.LinkedHashMap
|
import java.util.LinkedHashMap
|
||||||
@@ -82,7 +82,7 @@ private val SUPPORTED_ARGUMENT_TYPES = listOf(
|
|||||||
PsiElementArgumentType<JetExpression>(javaClass()),
|
PsiElementArgumentType<JetExpression>(javaClass()),
|
||||||
PsiElementArgumentType<JetTypeReference>(javaClass()),
|
PsiElementArgumentType<JetTypeReference>(javaClass()),
|
||||||
PlainTextArgumentType<String>(javaClass(), toPlainText = { it }),
|
PlainTextArgumentType<String>(javaClass(), toPlainText = { it }),
|
||||||
PlainTextArgumentType<Name>(javaClass(), toPlainText = { it.renderName() }),
|
PlainTextArgumentType<Name>(javaClass(), toPlainText = { it.render() }),
|
||||||
PsiChildRangeArgumentType
|
PsiChildRangeArgumentType
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.name
|
package org.jetbrains.kotlin.name
|
||||||
|
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
|
||||||
|
|
||||||
public fun FqName.isSubpackageOf(packageName: FqName): Boolean {
|
public fun FqName.isSubpackageOf(packageName: FqName): Boolean {
|
||||||
return when {
|
return when {
|
||||||
this == packageName -> true
|
this == packageName -> true
|
||||||
@@ -78,5 +76,3 @@ public fun isValidJavaFqName(qualifiedName: String?): Boolean {
|
|||||||
|
|
||||||
return state != State.AFTER_DOT
|
return state != State.AFTER_DOT
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun Name.renderName(): String = DescriptorRenderer.COMPACT.renderName(this)
|
|
||||||
|
|||||||
@@ -16,7 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.renderer
|
package org.jetbrains.kotlin.renderer
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
|
import org.jetbrains.kotlin.name.FqNameBase
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
public fun qualifiedNameForSourceCode(descriptor: ClassifierDescriptor): String {
|
public fun qualifiedNameForSourceCode(descriptor: ClassifierDescriptor): String {
|
||||||
val nameString = DescriptorRenderer.COMPACT.renderName(descriptor.getName())
|
val nameString = DescriptorRenderer.COMPACT.renderName(descriptor.getName())
|
||||||
@@ -30,3 +35,7 @@ private fun qualifierName(descriptor: DeclarationDescriptor): String? = when (de
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public fun Name.render(): String = DescriptorRenderer.COMPACT.renderName(this)
|
||||||
|
|
||||||
|
public fun FqNameBase.render(): String = DescriptorRenderer.COMPACT.renderFqName(this)
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.renderName
|
|
||||||
import org.jetbrains.kotlin.psi.JetExpression
|
import org.jetbrains.kotlin.psi.JetExpression
|
||||||
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
||||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||||
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||||
@@ -60,7 +60,7 @@ public fun JetScope.getImplicitReceiversWithInstanceToExpression(): Map<Receiver
|
|||||||
for ((index, receiver) in receivers.withIndex()) {
|
for ((index, receiver) in receivers.withIndex()) {
|
||||||
val owner = receiver.getContainingDeclaration()
|
val owner = receiver.getContainingDeclaration()
|
||||||
val (expressionText, isImmediateThis) = if (owner in outerDeclarationsWithInstance) {
|
val (expressionText, isImmediateThis) = if (owner in outerDeclarationsWithInstance) {
|
||||||
val thisWithLabel = thisQualifierName(receiver)?.let { "this@${it.renderName()}" }
|
val thisWithLabel = thisQualifierName(receiver)?.let { "this@${it.render()}" }
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
(thisWithLabel ?: "this") to true
|
(thisWithLabel ?: "this") to true
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ import org.jetbrains.kotlin.idea.util.FuzzyType
|
|||||||
import org.jetbrains.kotlin.idea.util.findLabelAndCall
|
import org.jetbrains.kotlin.idea.util.findLabelAndCall
|
||||||
import org.jetbrains.kotlin.idea.util.getImplicitReceiversWithInstanceToExpression
|
import org.jetbrains.kotlin.idea.util.getImplicitReceiversWithInstanceToExpression
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.renderName
|
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
@@ -266,7 +266,7 @@ private fun createKeywordWithLabelElement(keyword: String, label: Name?, addSpac
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun createKeywordWithLabelElement(keyword: String, label: Name?): LookupElementBuilder {
|
private fun createKeywordWithLabelElement(keyword: String, label: Name?): LookupElementBuilder {
|
||||||
val labelInCode = label?.renderName()
|
val labelInCode = label?.render()
|
||||||
var element = LookupElementBuilder.create(KeywordLookupObject, if (label == null) keyword else "$keyword@$labelInCode")
|
var element = LookupElementBuilder.create(KeywordLookupObject, if (label == null) keyword else "$keyword@$labelInCode")
|
||||||
element = element.withPresentableText(keyword)
|
element = element.withPresentableText(keyword)
|
||||||
element = element.withBoldness(true)
|
element = element.withBoldness(true)
|
||||||
|
|||||||
+22
-1
@@ -25,12 +25,17 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.PsiMember;
|
import com.intellij.psi.PsiMember;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.kotlin.idea.JetDescriptorIconProvider;
|
import org.jetbrains.kotlin.idea.JetDescriptorIconProvider;
|
||||||
import org.jetbrains.kotlin.psi.JetClass;
|
import org.jetbrains.kotlin.psi.JetClass;
|
||||||
import org.jetbrains.kotlin.psi.JetDeclaration;
|
import org.jetbrains.kotlin.psi.JetDeclaration;
|
||||||
import org.jetbrains.kotlin.psi.JetNamedDeclaration;
|
import org.jetbrains.kotlin.psi.JetNamedDeclaration;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||||
|
import org.jetbrains.kotlin.renderer.DescriptorRendererBuilder;
|
||||||
|
import org.jetbrains.kotlin.renderer.NameShortness;
|
||||||
|
import org.jetbrains.kotlin.renderer.RendererPackage;
|
||||||
|
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
@@ -42,12 +47,28 @@ public class DescriptorClassMember extends MemberChooserObjectBase implements Cl
|
|||||||
@NotNull
|
@NotNull
|
||||||
private final PsiElement myPsiElement;
|
private final PsiElement myPsiElement;
|
||||||
|
|
||||||
|
private static final DescriptorRenderer MEMBER_RENDERER = new DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setModifiers()
|
||||||
|
.setStartFromName(true)
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.build();
|
||||||
|
|
||||||
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
||||||
super(DescriptorRenderer.STARTS_FROM_NAME.render(descriptor), getIcon(element, descriptor));
|
super(getText(descriptor), getIcon(element, descriptor));
|
||||||
myPsiElement = element;
|
myPsiElement = element;
|
||||||
myDescriptor = descriptor;
|
myDescriptor = descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getText(DeclarationDescriptor descriptor) {
|
||||||
|
if (descriptor instanceof ClassDescriptor) {
|
||||||
|
return RendererPackage.render(DescriptorUtils.getFqNameSafe(descriptor));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return MEMBER_RENDERER.render(descriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static Icon getIcon(PsiElement element, DeclarationDescriptor declarationDescriptor) {
|
private static Icon getIcon(PsiElement element, DeclarationDescriptor declarationDescriptor) {
|
||||||
if (element.isValid()) {
|
if (element.isValid()) {
|
||||||
boolean isClass = element instanceof PsiClass || element instanceof JetClass;
|
boolean isClass = element instanceof PsiClass || element instanceof JetClass;
|
||||||
|
|||||||
@@ -41,9 +41,9 @@ import org.jetbrains.kotlin.idea.util.ShortenReferences
|
|||||||
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
import org.jetbrains.kotlin.idea.core.moveFunctionLiteralOutsideParentheses
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.renderName
|
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils
|
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
@@ -621,7 +621,7 @@ public abstract class DeprecatedSymbolUsageFixBase(
|
|||||||
assert(usages.all { expression.isAncestor(it, strict = true) })
|
assert(usages.all { expression.isAncestor(it, strict = true) })
|
||||||
|
|
||||||
fun replaceUsages(name: Name) {
|
fun replaceUsages(name: Name) {
|
||||||
val nameInCode = psiFactory.createExpression(name.renderName())
|
val nameInCode = psiFactory.createExpression(name.render())
|
||||||
for (usage in usages) {
|
for (usage in usages) {
|
||||||
usage.replace(nameInCode)
|
usage.replace(nameInCode)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user