(S|U)LC: fix getTextOffset and getTextRange for modifier list of accessors
in a similar way 36e1149e did for property accessors
This commit is contained in:
committed by
Ilya Kirillov
parent
19151fa866
commit
e1344968ec
+19
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.light.classes.symbol.modifierLists
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiAnnotation
|
||||
import com.intellij.psi.PsiModifier
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
||||
@@ -12,6 +13,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
||||
|
||||
internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
||||
@@ -50,8 +52,25 @@ internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
||||
get() = invalidAccess()
|
||||
|
||||
override fun getAnnotations(): Array<out PsiAnnotation> = annotations.toTypedArray()
|
||||
|
||||
override fun findAnnotation(qualifiedName: String) = annotations.firstOrNull { it.qualifiedName == qualifiedName }
|
||||
|
||||
override fun getTextOffset(): Int {
|
||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
||||
auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
|
||||
else
|
||||
super.getTextOffset()
|
||||
}
|
||||
|
||||
override fun getTextRange(): TextRange {
|
||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
||||
auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
|
||||
else
|
||||
super.getTextRange()
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean = this === other
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.asJava.classes
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.PsiImplUtil
|
||||
import com.intellij.psi.impl.PsiSuperMethodImplUtil
|
||||
@@ -15,6 +16,7 @@ import com.intellij.psi.util.MethodSignature
|
||||
import com.intellij.psi.util.MethodSignatureBackedByPsiMethod
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethodImpl
|
||||
import org.jetbrains.kotlin.asJava.elements.KtUltraLightModifierList
|
||||
import org.jetbrains.kotlin.codegen.FunctionCodegen
|
||||
@@ -27,6 +29,7 @@ import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
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.resolve.DescriptorUtils
|
||||
@@ -57,6 +60,22 @@ private class KtUltraLightMethodModifierList(
|
||||
private fun isImplementationInInterface() = owner.containingClass.isInterface && owner.kotlinOrigin?.hasBody() == true
|
||||
|
||||
override fun copy() = KtUltraLightMethodModifierList(support, owner, delegate)
|
||||
|
||||
override fun getTextOffset(): Int {
|
||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
||||
auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
|
||||
else
|
||||
super.getTextOffset()
|
||||
}
|
||||
|
||||
override fun getTextRange(): TextRange {
|
||||
val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
|
||||
return if (auxiliaryOrigin is KtPropertyAccessor)
|
||||
auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
|
||||
else
|
||||
super.getTextRange()
|
||||
}
|
||||
}
|
||||
|
||||
internal abstract class KtUltraLightMethod(
|
||||
|
||||
Reference in New Issue
Block a user