KTIJ-26024 [Analysis API] Refactor FirTowerDataContextAllElementsCollector

This commit is contained in:
Roman Golyshev
2023-06-28 12:19:10 +02:00
committed by Space Team
parent 96697b5a77
commit d7d2c1f260
@@ -50,11 +50,7 @@ internal class FirTowerDataContextAllElementsCollector : FirTowerDataContextColl
var current: PsiElement? = ktElement
while (current != null) {
if (current is KtElement) {
elementsToContext[current]?.let { return it }
}
if (current is KtDeclaration) {
val originalDeclaration = current.originalDeclaration
originalDeclaration?.let { elementsToContext[it] }?.let { return it }
getContextForElement(current)?.let { return it }
}
if (current is KtFile) {
break
@@ -63,6 +59,17 @@ internal class FirTowerDataContextAllElementsCollector : FirTowerDataContextColl
}
return null
}
private fun getContextForElement(element: KtElement): FirTowerDataContext? {
elementsToContext[element]?.let { return it }
if (element is KtDeclaration) {
val originalDeclaration = element.originalDeclaration
originalDeclaration?.let { elementsToContext[it] }?.let { return it }
}
return null
}
}
private tailrec fun PsiElement.closestBlockLevelOrInitializerExpression(): KtExpression? =