referenceUtil: cleanup code
This commit is contained in:
@@ -52,13 +52,10 @@ import java.util.*
|
|||||||
// For property accessor return enclosing property
|
// For property accessor return enclosing property
|
||||||
val PsiReference.unwrappedTargets: Set<PsiElement>
|
val PsiReference.unwrappedTargets: Set<PsiElement>
|
||||||
get() {
|
get() {
|
||||||
fun PsiElement.adjust(): PsiElement? {
|
fun PsiElement.adjust(): PsiElement? = when (val target = unwrapped?.originalElement) {
|
||||||
val target = unwrapped?.originalElement
|
is KtPropertyAccessor -> target.getNonStrictParentOfType<KtProperty>()
|
||||||
return when {
|
|
||||||
target is KtPropertyAccessor -> target.getNonStrictParentOfType<KtProperty>()
|
|
||||||
else -> target
|
else -> target
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is PsiPolyVariantReference -> multiResolve(false).mapNotNullTo(HashSet<PsiElement>()) { it.element?.adjust() }
|
is PsiPolyVariantReference -> multiResolve(false).mapNotNullTo(HashSet<PsiElement>()) { it.element?.adjust() }
|
||||||
@@ -107,8 +104,7 @@ fun PsiReference.matchesTarget(candidateTarget: PsiElement): Boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (element is KtLabelReferenceExpression) {
|
if (element is KtLabelReferenceExpression) {
|
||||||
val labelParent = (element.parent as? KtContainerNode)?.parent
|
when ((element.parent as? KtContainerNode)?.parent) {
|
||||||
when (labelParent) {
|
|
||||||
is KtReturnExpression -> unwrappedTargets.forEach {
|
is KtReturnExpression -> unwrappedTargets.forEach {
|
||||||
if (it !is KtFunctionLiteral && !(it is KtNamedFunction && it.name.isNullOrEmpty())) return@forEach
|
if (it !is KtFunctionLiteral && !(it is KtNamedFunction && it.name.isNullOrEmpty())) return@forEach
|
||||||
it as KtFunction
|
it as KtFunction
|
||||||
@@ -205,13 +201,11 @@ val KDocName.mainReference: KDocReference
|
|||||||
get() = references.firstIsInstance()
|
get() = references.firstIsInstance()
|
||||||
|
|
||||||
val KtElement.mainReference: KtReference?
|
val KtElement.mainReference: KtReference?
|
||||||
get() {
|
get() = when (this) {
|
||||||
return when {
|
is KtReferenceExpression -> mainReference
|
||||||
this is KtReferenceExpression -> mainReference
|
is KDocName -> mainReference
|
||||||
this is KDocName -> mainReference
|
|
||||||
else -> references.firstIsInstanceOrNull<KtReference>()
|
else -> references.firstIsInstanceOrNull<KtReference>()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fun KtElement.resolveMainReferenceToDescriptors(): Collection<DeclarationDescriptor> {
|
fun KtElement.resolveMainReferenceToDescriptors(): Collection<DeclarationDescriptor> {
|
||||||
val bindingContext = analyze(BodyResolveMode.PARTIAL)
|
val bindingContext = analyze(BodyResolveMode.PARTIAL)
|
||||||
@@ -229,8 +223,7 @@ fun KtExpression.readWriteAccess(useResolveForReadWrite: Boolean) = readWriteAcc
|
|||||||
fun KtExpression.readWriteAccessWithFullExpression(useResolveForReadWrite: Boolean): Pair<ReferenceAccess, KtExpression> {
|
fun KtExpression.readWriteAccessWithFullExpression(useResolveForReadWrite: Boolean): Pair<ReferenceAccess, KtExpression> {
|
||||||
var expression = getQualifiedExpressionForSelectorOrThis()
|
var expression = getQualifiedExpressionForSelectorOrThis()
|
||||||
loop@ while (true) {
|
loop@ while (true) {
|
||||||
val parent = expression.parent
|
when (val parent = expression.parent) {
|
||||||
when (parent) {
|
|
||||||
is KtParenthesizedExpression, is KtAnnotatedExpression, is KtLabeledExpression -> expression = parent as KtExpression
|
is KtParenthesizedExpression, is KtAnnotatedExpression, is KtLabeledExpression -> expression = parent as KtExpression
|
||||||
else -> break@loop
|
else -> break@loop
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user