(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
|
package org.jetbrains.kotlin.light.classes.symbol.modifierLists
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.TextRange
|
||||||
import com.intellij.psi.PsiAnnotation
|
import com.intellij.psi.PsiAnnotation
|
||||||
import com.intellij.psi.PsiModifier
|
import com.intellij.psi.PsiModifier
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
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.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.KtPropertyAccessor
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
||||||
|
|
||||||
internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
||||||
@@ -50,8 +52,25 @@ internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
|||||||
get() = invalidAccess()
|
get() = invalidAccess()
|
||||||
|
|
||||||
override fun getAnnotations(): Array<out PsiAnnotation> = annotations.toTypedArray()
|
override fun getAnnotations(): Array<out PsiAnnotation> = annotations.toTypedArray()
|
||||||
|
|
||||||
override fun findAnnotation(qualifiedName: String) = annotations.firstOrNull { it.qualifiedName == qualifiedName }
|
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 equals(other: Any?): Boolean = this === other
|
||||||
|
|
||||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.asJava.classes
|
package org.jetbrains.kotlin.asJava.classes
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.TextRange
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.impl.PsiImplUtil
|
import com.intellij.psi.impl.PsiImplUtil
|
||||||
import com.intellij.psi.impl.PsiSuperMethodImplUtil
|
import com.intellij.psi.impl.PsiSuperMethodImplUtil
|
||||||
@@ -15,6 +16,7 @@ import com.intellij.psi.util.MethodSignature
|
|||||||
import com.intellij.psi.util.MethodSignatureBackedByPsiMethod
|
import com.intellij.psi.util.MethodSignatureBackedByPsiMethod
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
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.KtLightMethodImpl
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtUltraLightModifierList
|
import org.jetbrains.kotlin.asJava.elements.KtUltraLightModifierList
|
||||||
import org.jetbrains.kotlin.codegen.FunctionCodegen
|
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.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtFunction
|
import org.jetbrains.kotlin.psi.KtFunction
|
||||||
import org.jetbrains.kotlin.psi.KtProperty
|
import org.jetbrains.kotlin.psi.KtProperty
|
||||||
|
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||||
import org.jetbrains.kotlin.psi.KtTypeParameterListOwner
|
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
|
||||||
@@ -57,6 +60,22 @@ private class KtUltraLightMethodModifierList(
|
|||||||
private fun isImplementationInInterface() = owner.containingClass.isInterface && owner.kotlinOrigin?.hasBody() == true
|
private fun isImplementationInInterface() = owner.containingClass.isInterface && owner.kotlinOrigin?.hasBody() == true
|
||||||
|
|
||||||
override fun copy() = KtUltraLightMethodModifierList(support, owner, delegate)
|
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(
|
internal abstract class KtUltraLightMethod(
|
||||||
|
|||||||
Reference in New Issue
Block a user