(U|S)LC: fix getText for modifier list / accessor
This commit is contained in:
committed by
Ilya Kirillov
parent
e1344968ec
commit
dbf0ba442a
+15
-11
@@ -122,22 +122,26 @@ abstract class KtLightMethodImpl protected constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTextOffset(): Int {
|
private inline fun <R> getTextVariantFromPropertyAccessorIfNeeded(
|
||||||
|
retriever: (KtPropertyAccessor) -> R
|
||||||
|
): R? {
|
||||||
val auxiliaryOrigin = lightMemberOrigin?.auxiliaryOriginalElement
|
val auxiliaryOrigin = lightMemberOrigin?.auxiliaryOriginalElement
|
||||||
if (auxiliaryOrigin is KtPropertyAccessor) {
|
return (auxiliaryOrigin as? KtPropertyAccessor)?.let(retriever)
|
||||||
return auxiliaryOrigin.textOffset
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return super.getTextOffset()
|
override fun getText(): String {
|
||||||
|
return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getText)
|
||||||
|
?: super.getText()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getTextOffset(): Int {
|
||||||
|
return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getTextOffset)
|
||||||
|
?: super.getTextOffset()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTextRange(): TextRange {
|
override fun getTextRange(): TextRange {
|
||||||
val auxiliaryOrigin = lightMemberOrigin?.auxiliaryOriginalElement
|
return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getTextRange)
|
||||||
if (auxiliaryOrigin is KtPropertyAccessor) {
|
?: super.getTextRange()
|
||||||
return auxiliaryOrigin.textRange
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.getTextRange()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract override fun getThrowsList(): PsiReferenceList
|
abstract override fun getThrowsList(): PsiReferenceList
|
||||||
|
|||||||
+4
@@ -217,6 +217,10 @@ internal class SymbolLightAccessorMethod(
|
|||||||
return _defaultValue
|
return _defaultValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getText(): String {
|
||||||
|
return lightMemberOrigin?.auxiliaryOriginalElement?.text ?: super.getText()
|
||||||
|
}
|
||||||
|
|
||||||
override fun getTextOffset(): Int {
|
override fun getTextOffset(): Int {
|
||||||
return lightMemberOrigin?.auxiliaryOriginalElement?.textOffset ?: super.getTextOffset()
|
return lightMemberOrigin?.auxiliaryOriginalElement?.textOffset ?: super.getTextOffset()
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-10
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
|||||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||||
|
import org.jetbrains.kotlin.psi.KtModifierList
|
||||||
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
||||||
|
|
||||||
@@ -55,20 +56,26 @@ internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
|||||||
|
|
||||||
override fun findAnnotation(qualifiedName: String) = annotations.firstOrNull { it.qualifiedName == qualifiedName }
|
override fun findAnnotation(qualifiedName: String) = annotations.firstOrNull { it.qualifiedName == qualifiedName }
|
||||||
|
|
||||||
override fun getTextOffset(): Int {
|
private inline fun <R> getTextVariantFromModifierListOfPropertyAccessorIfNeeded(
|
||||||
|
retriever: (KtModifierList) -> R
|
||||||
|
): R? {
|
||||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
return (auxiliaryOrigin as? KtPropertyAccessor)?.modifierList?.let(retriever)
|
||||||
auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
|
}
|
||||||
else
|
|
||||||
super.getTextOffset()
|
override fun getText(): String {
|
||||||
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getText)
|
||||||
|
?: super.getText()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getTextOffset(): Int {
|
||||||
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextOffset)
|
||||||
|
?: super.getTextOffset()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTextRange(): TextRange {
|
override fun getTextRange(): TextRange {
|
||||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextRange)
|
||||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
?: super.getTextRange()
|
||||||
auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
|
|
||||||
else
|
|
||||||
super.getTextRange()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean = this === other
|
override fun equals(other: Any?): Boolean = this === other
|
||||||
|
|||||||
+17
-15
@@ -26,11 +26,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|||||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.getSpecialSignatureInfo
|
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.getSpecialSignatureInfo
|
||||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
||||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.KtFunction
|
|
||||||
import org.jetbrains.kotlin.psi.KtProperty
|
|
||||||
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
|
||||||
import org.jetbrains.kotlin.psi.KtTypeParameterListOwner
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
||||||
@@ -61,20 +57,26 @@ private class KtUltraLightMethodModifierList(
|
|||||||
|
|
||||||
override fun copy() = KtUltraLightMethodModifierList(support, owner, delegate)
|
override fun copy() = KtUltraLightMethodModifierList(support, owner, delegate)
|
||||||
|
|
||||||
override fun getTextOffset(): Int {
|
private inline fun <R> getTextVariantFromModifierListOfPropertyAccessorIfNeeded(
|
||||||
|
retriever: (KtModifierList) -> R
|
||||||
|
): R? {
|
||||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
return (auxiliaryOrigin as? KtPropertyAccessor)?.modifierList?.let(retriever)
|
||||||
auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
|
}
|
||||||
else
|
|
||||||
super.getTextOffset()
|
override fun getText(): String {
|
||||||
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getText)
|
||||||
|
?: super.getText()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getTextOffset(): Int {
|
||||||
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextOffset)
|
||||||
|
?: super.getTextOffset()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTextRange(): TextRange {
|
override fun getTextRange(): TextRange {
|
||||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextRange)
|
||||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
?: super.getTextRange()
|
||||||
auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
|
|
||||||
else
|
|
||||||
super.getTextRange()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user