KTIJ-27139 [AA] Clean-up KtFirReferenceShortener
Unify the code which detects whether qualified expression/type is actually selected
This commit is contained in:
+38
-8
@@ -470,8 +470,7 @@ private class ElementsToShortenCollector(
|
|||||||
val typeElement = resolvedTypeRef.correspondingTypePsi ?: return
|
val typeElement = resolvedTypeRef.correspondingTypePsi ?: return
|
||||||
if (typeElement.qualifier == null) return
|
if (typeElement.qualifier == null) return
|
||||||
|
|
||||||
val typeReferenceTextRange = typeElement.referenceExpression?.textRange
|
if (!typeElement.inSelection) return
|
||||||
if (typeReferenceTextRange?.intersects(selection) != true) return
|
|
||||||
|
|
||||||
val classifierId = resolvedTypeRef.type.lowerBoundIfFlexible().candidateClassId ?: return
|
val classifierId = resolvedTypeRef.type.lowerBoundIfFlexible().candidateClassId ?: return
|
||||||
|
|
||||||
@@ -544,8 +543,7 @@ private class ElementsToShortenCollector(
|
|||||||
else -> return
|
else -> return
|
||||||
}
|
}
|
||||||
|
|
||||||
val typeReferenceTextRange = wholeQualifierElement.selectorExpression?.textRange
|
if (!wholeQualifierElement.inSelection) return
|
||||||
if (typeReferenceTextRange?.intersects(selection) != true) return
|
|
||||||
|
|
||||||
findTypeQualifierToShorten(wholeClassQualifier, wholeQualifierElement)?.let(::addElementToShorten)
|
findTypeQualifierToShorten(wholeClassQualifier, wholeQualifierElement)?.let(::addElementToShorten)
|
||||||
}
|
}
|
||||||
@@ -1035,8 +1033,7 @@ private class ElementsToShortenCollector(
|
|||||||
val propertyReferenceExpression = firPropertyAccess.correspondingNameReference ?: return
|
val propertyReferenceExpression = firPropertyAccess.correspondingNameReference ?: return
|
||||||
val qualifiedProperty = propertyReferenceExpression.getQualifiedElement() as? KtDotQualifiedExpression ?: return
|
val qualifiedProperty = propertyReferenceExpression.getQualifiedElement() as? KtDotQualifiedExpression ?: return
|
||||||
|
|
||||||
val propertyReferenceTextRange = propertyReferenceExpression.textRange
|
if (!qualifiedProperty.inSelection) return
|
||||||
if (!propertyReferenceTextRange.intersects(selection)) return
|
|
||||||
|
|
||||||
val propertySymbol = firPropertyAccess.referencedSymbol ?: return
|
val propertySymbol = firPropertyAccess.referencedSymbol ?: return
|
||||||
|
|
||||||
@@ -1081,8 +1078,7 @@ private class ElementsToShortenCollector(
|
|||||||
val qualifiedCallExpression = functionCall.psi as? KtDotQualifiedExpression ?: return
|
val qualifiedCallExpression = functionCall.psi as? KtDotQualifiedExpression ?: return
|
||||||
val callExpression = qualifiedCallExpression.selectorExpression as? KtCallExpression ?: return
|
val callExpression = qualifiedCallExpression.selectorExpression as? KtCallExpression ?: return
|
||||||
|
|
||||||
val calleeTextRange = callExpression.calleeExpression?.textRange
|
if (!qualifiedCallExpression.inSelection) return
|
||||||
if (calleeTextRange?.intersects(selection) != true) return
|
|
||||||
|
|
||||||
val calleeReference = functionCall.calleeReference
|
val calleeReference = functionCall.calleeReference
|
||||||
val calledSymbol = findUnambiguousReferencedCallableId(calleeReference) ?: return
|
val calledSymbol = findUnambiguousReferencedCallableId(calleeReference) ?: return
|
||||||
@@ -1228,6 +1224,40 @@ private class ElementsToShortenCollector(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether type reference of [this] type is considered to be in the [selection] text range.
|
||||||
|
*
|
||||||
|
* Examples of calls:
|
||||||
|
*
|
||||||
|
* - `|foo.Bar<...>|` - true
|
||||||
|
* - `foo.|Bar|<...>` - true
|
||||||
|
* - `foo.|B|ar<...>` - true
|
||||||
|
* - `|foo|.Bar<...>` - false
|
||||||
|
* - `foo.Bar|<...>|` - false
|
||||||
|
*/
|
||||||
|
private val KtUserType.inSelection: Boolean
|
||||||
|
get() {
|
||||||
|
val typeReference = referenceExpression ?: return false
|
||||||
|
return typeReference.textRange.intersects(selection)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether callee reference of [this] qualified expression is considered to be in the [selection] text range.
|
||||||
|
*
|
||||||
|
* Examples of calls:
|
||||||
|
*
|
||||||
|
* - `|foo.bar()|` - true
|
||||||
|
* - `foo.|bar|()` - true
|
||||||
|
* - `foo.|b|ar()` - true
|
||||||
|
* - `|foo|.bar()` - false
|
||||||
|
* - `foo.bar|(...)|` - false
|
||||||
|
*/
|
||||||
|
private val KtDotQualifiedExpression.inSelection: Boolean
|
||||||
|
get() {
|
||||||
|
val selectorReference = getQualifiedElementSelector() ?: return false
|
||||||
|
return selectorReference.textRange.intersects(selection)
|
||||||
|
}
|
||||||
|
|
||||||
private val ClassId.outerClassesWithSelf: Sequence<ClassId>
|
private val ClassId.outerClassesWithSelf: Sequence<ClassId>
|
||||||
get() = generateSequence(this) { it.outerClassId }
|
get() = generateSequence(this) { it.outerClassId }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user