KtLightElement is no longer PsiNamedElement

This commit is contained in:
Pavel V. Talanov
2017-04-24 17:29:12 +03:00
parent 04f7ba95c5
commit 8f4c969933
6 changed files with 9 additions and 20 deletions
@@ -24,13 +24,13 @@ import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
interface KtLightElement<out T : KtElement, out D : PsiElement> : PsiNamedElement { interface KtLightElement<out T : KtElement, out D : PsiElement> : PsiElement {
val kotlinOrigin: T? val kotlinOrigin: T?
val clsDelegate: D val clsDelegate: D
} }
interface KtLightDeclaration<out T : KtDeclaration, out D : PsiElement> : KtLightElement<T, D> interface KtLightDeclaration<out T : KtDeclaration, out D : PsiElement> : KtLightElement<T, D>, PsiNamedElement
interface KtLightMember<out D : PsiMember> : PsiMember, KtLightDeclaration<KtDeclaration, D>, PsiNameIdentifierOwner, PsiDocCommentOwner { interface KtLightMember<out D : PsiMember> : PsiMember, KtLightDeclaration<KtDeclaration, D>, PsiNameIdentifierOwner, PsiDocCommentOwner {
val lightMemberOrigin: LightMemberOrigin? val lightMemberOrigin: LightMemberOrigin?
@@ -38,8 +38,6 @@ class KtLightPsiReferenceList (
inner class KtLightSuperTypeReference( inner class KtLightSuperTypeReference(
override val clsDelegate: PsiJavaCodeReferenceElement override val clsDelegate: PsiJavaCodeReferenceElement
) : KtLightElement<KtSuperTypeListEntry, PsiJavaCodeReferenceElement>, PsiJavaCodeReferenceElement by clsDelegate { ) : KtLightElement<KtSuperTypeListEntry, PsiJavaCodeReferenceElement>, PsiJavaCodeReferenceElement by clsDelegate {
override fun getName() = null
override fun setName(name: String) = throw UnsupportedOperationException()
override val kotlinOrigin by lazyPub { override val kotlinOrigin by lazyPub {
val superTypeList = this@KtLightPsiReferenceList.kotlinOrigin ?: return@lazyPub null val superTypeList = this@KtLightPsiReferenceList.kotlinOrigin ?: return@lazyPub null
@@ -69,9 +67,6 @@ class KtLightPsiReferenceList (
clsDelegate.referenceElements.map { KtLightSuperTypeReference(it) }.toTypedArray() clsDelegate.referenceElements.map { KtLightSuperTypeReference(it) }.toTypedArray()
} }
override fun getName() = null
override fun setName(name: String) = throw UnsupportedOperationException()
override fun getParent() = owner override fun getParent() = owner
override fun getReferenceElements() = _referenceElements override fun getReferenceElements() = _referenceElements
@@ -23,10 +23,7 @@ import com.intellij.psi.search.*
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.util.Processor import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.*
import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.elements.KtLightParameter
import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toLightElements import org.jetbrains.kotlin.asJava.toLightElements
@@ -245,7 +242,7 @@ class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, ReferencesSearc
if (kotlinOptions.acceptCompanionObjectMembers) { if (kotlinOptions.acceptCompanionObjectMembers) {
val originLightClass = element.getStrictParentOfType<KtClass>()?.toLightClass() val originLightClass = element.getStrictParentOfType<KtClass>()?.toLightClass()
if (originLightClass != null) { if (originLightClass != null) {
val lightDeclarations: List<KtLightElement<*, *>?> = val lightDeclarations: List<KtLightMember<*>?> =
originLightClass.methods.map { it as? KtLightMethod } + originLightClass.methods.map { it as? KtLightMethod } +
originLightClass.fields.map { it as? KtLightField } originLightClass.fields.map { it as? KtLightField }
@@ -42,7 +42,7 @@ import com.intellij.util.IncorrectOperationException
import com.intellij.util.containers.MultiMap import com.intellij.util.containers.MultiMap
import gnu.trove.THashMap import gnu.trove.THashMap
import gnu.trove.TObjectHashingStrategy import gnu.trove.TObjectHashingStrategy
import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
import org.jetbrains.kotlin.asJava.toLightElements import org.jetbrains.kotlin.asJava.toLightElements
import org.jetbrains.kotlin.idea.codeInsight.shorten.addToBeShortenedDescendantsToWaitingSet import org.jetbrains.kotlin.idea.codeInsight.shorten.addToBeShortenedDescendantsToWaitingSet
import org.jetbrains.kotlin.idea.core.deleteSingle import org.jetbrains.kotlin.idea.core.deleteSingle
@@ -105,7 +105,7 @@ private object ElementHashingStrategy : TObjectHashingStrategy<PsiElement> {
override fun equals(e1: PsiElement?, e2: PsiElement?): Boolean { override fun equals(e1: PsiElement?, e2: PsiElement?): Boolean {
if (e1 === e2) return true if (e1 === e2) return true
// Name should be enough to distinguish different light elements based on the same original declaration // Name should be enough to distinguish different light elements based on the same original declaration
if (e1 is KtLightElement<*, *> && e2 is KtLightElement<*, *>) { if (e1 is KtLightDeclaration<*, *> && e2 is KtLightDeclaration<*, *>) {
return e1.kotlinOrigin == e2.kotlinOrigin && e1.name == e2.name return e1.kotlinOrigin == e2.kotlinOrigin && e1.name == e2.name
} }
return e1 == e2 return e1 == e2
@@ -114,7 +114,7 @@ private object ElementHashingStrategy : TObjectHashingStrategy<PsiElement> {
override fun computeHashCode(e: PsiElement?): Int { override fun computeHashCode(e: PsiElement?): Int {
return when (e) { return when (e) {
null -> 0 null -> 0
is KtLightElement<*, *> -> (e.kotlinOrigin?.hashCode() ?: 0) * 31 + (e.name?.hashCode() ?: 0) is KtLightDeclaration<*, *> -> (e.kotlinOrigin?.hashCode() ?: 0) * 31 + (e.name?.hashCode() ?: 0)
else -> e.hashCode() else -> e.hashCode()
} }
} }
@@ -34,7 +34,7 @@ import com.intellij.usageView.UsageInfo
import com.intellij.usageView.UsageViewUtil import com.intellij.usageView.UsageViewUtil
import org.jetbrains.kotlin.asJava.* import org.jetbrains.kotlin.asJava.*
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor
@@ -100,7 +100,7 @@ class RenameKotlinPropertyProcessor : RenameKotlinPsiProcessor() {
|| (getterJvmName == null && (it.resolve() as? PsiNamedElement)?.name != setterJvmName) || (getterJvmName == null && (it.resolve() as? PsiNamedElement)?.name != setterJvmName)
|| (setterJvmName == null && (it.resolve() as? PsiNamedElement)?.name != getterJvmName) || (setterJvmName == null && (it.resolve() as? PsiNamedElement)?.name != getterJvmName)
} }
element is KtLightElement<*, *> -> { element is KtLightDeclaration<*, *> -> {
val name = element.name val name = element.name
if (name == getterJvmName || name == setterJvmName) allReferences.filterNot { it is KtReference } else allReferences if (name == getterJvmName || name == setterJvmName) allReferences.filterNot { it is KtReference } else allReferences
} }
@@ -24,7 +24,6 @@ import com.intellij.spring.model.highlighting.SpringAutowireUtil
import com.intellij.spring.model.jam.qualifiers.SpringJamQualifier import com.intellij.spring.model.jam.qualifiers.SpringJamQualifier
import com.intellij.spring.model.utils.SpringModelSearchers import com.intellij.spring.model.utils.SpringModelSearchers
import com.intellij.spring.references.SpringQualifierReference import com.intellij.spring.references.SpringQualifierReference
import com.intellij.util.IncorrectOperationException
import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.asJava.toLightAnnotation import org.jetbrains.kotlin.asJava.toLightAnnotation
import org.jetbrains.kotlin.asJava.toLightElements import org.jetbrains.kotlin.asJava.toLightElements
@@ -50,8 +49,6 @@ class KtSpringQualifierReference(element: KtStringTemplateExpression) : SpringQu
class StringTemplatePsiLiteralWrapper( class StringTemplatePsiLiteralWrapper(
val element: KtStringTemplateExpression val element: KtStringTemplateExpression
) : PsiElement by element, PsiLiteralExpression, KtLightElement<KtStringTemplateExpression, KtStringTemplateExpression>, PsiCompiledElement { ) : PsiElement by element, PsiLiteralExpression, KtLightElement<KtStringTemplateExpression, KtStringTemplateExpression>, PsiCompiledElement {
override fun getName() = null
override fun setName(newName: String) = throw IncorrectOperationException()
override fun getValue() = element.plainContent override fun getValue() = element.plainContent
override fun getType() = PsiType.getJavaLangString(element.manager, element.project.allScope()) override fun getType() = PsiType.getJavaLangString(element.manager, element.project.allScope())