More elegant shortening of user type
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.psi;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||
@@ -80,6 +81,15 @@ public class JetUserType extends JetElementImplStub<KotlinUserTypeStub> implemen
|
||||
return getStubOrPsiChild(JetStubElementTypes.USER_TYPE);
|
||||
}
|
||||
|
||||
public void deleteQualifier() {
|
||||
JetUserType qualifier = getQualifier();
|
||||
assert qualifier != null;
|
||||
PsiElement dot = findChildByType(JetTokens.DOT);
|
||||
assert dot != null;
|
||||
qualifier.delete();
|
||||
dot.delete();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getReferencedName() {
|
||||
JetNameReferenceExpression referenceExpression = getReferenceExpression();
|
||||
|
||||
@@ -31,11 +31,9 @@ import java.util.Collections
|
||||
import org.jetbrains.kotlin.analyzer.analyzeInContext
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny
|
||||
import java.util.LinkedHashSet
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
|
||||
public object ShortenReferences {
|
||||
public fun process(element: JetElement) {
|
||||
@@ -138,7 +136,7 @@ public object ShortenReferences {
|
||||
protected fun bindingContext(element: JetElement): BindingContext
|
||||
= preResolveMap[element] ?: resolutionFacade.analyze(element)
|
||||
|
||||
protected abstract fun getShortenedElement(element: T): JetElement?
|
||||
protected abstract fun shortenElement(element: T)
|
||||
|
||||
override fun visitElement(element: PsiElement) {
|
||||
if (elementFilter(element) != FilterResult.SKIP) {
|
||||
@@ -148,7 +146,7 @@ public object ShortenReferences {
|
||||
|
||||
public fun finish() {
|
||||
for (element in elementsToShorten) {
|
||||
getShortenedElement(element)?.let { element.replace(it) }
|
||||
shortenElement(element)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -201,11 +199,8 @@ public object ShortenReferences {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getShortenedElement(element: JetUserType): JetElement? {
|
||||
val referenceExpression = element.getReferenceExpression() ?: return null
|
||||
val typeArgumentList = element.getTypeArgumentList()
|
||||
val text = referenceExpression.getText() + (if (typeArgumentList != null) typeArgumentList.getText() else "")
|
||||
return JetPsiFactory(element).createType(text).getTypeElement()!!
|
||||
override fun shortenElement(element: JetUserType) {
|
||||
element.deleteQualifier()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +255,9 @@ public object ShortenReferences {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getShortenedElement(element: JetQualifiedExpression): JetElement = element.getSelectorExpression()!!
|
||||
override fun shortenElement(element: JetQualifiedExpression) {
|
||||
element.replace(element.getSelectorExpression()!!)
|
||||
}
|
||||
}
|
||||
|
||||
private fun DeclarationDescriptor.asString()
|
||||
|
||||
Reference in New Issue
Block a user