Minor: introduce 'lazyTerminations' in Call chain --> Sequence
Related to KT-27104
This commit is contained in:
+8
-1
@@ -173,7 +173,7 @@ private fun KtQualifiedExpression.collectCallExpression(context: BindingContext)
|
||||
.dropWhile { !it.isTransformationOrTermination(context) }
|
||||
.takeWhile { it.isTransformationOrTermination(context) && !it.hasReturn() }
|
||||
.toList()
|
||||
.dropLastWhile { it.calleeExpression?.text == "groupingBy" }
|
||||
.dropLastWhile { it.isLazyTermination(context) }
|
||||
if (transformationCalls.size < 2) return emptyList()
|
||||
|
||||
return transformationCalls
|
||||
@@ -201,6 +201,11 @@ private fun KtCallExpression.isTermination(context: BindingContext): Boolean {
|
||||
return fqName == getResolvedCall(context)?.resultingDescriptor?.fqNameSafe
|
||||
}
|
||||
|
||||
private fun KtCallExpression.isLazyTermination(context: BindingContext): Boolean {
|
||||
val fqName = lazyTerminations[calleeExpression?.text] ?: return false
|
||||
return fqName == getResolvedCall(context)?.resultingDescriptor?.fqNameSafe
|
||||
}
|
||||
|
||||
private val transformations = listOf(
|
||||
"chunked",
|
||||
"distinct",
|
||||
@@ -302,4 +307,6 @@ private val terminations = listOf(
|
||||
it to FqName("$pkg.$it")
|
||||
}
|
||||
|
||||
private val lazyTerminations = terminations.filter { (key, _) -> key == "groupingBy" }
|
||||
|
||||
private val transformationAndTerminations = transformations + terminations
|
||||
|
||||
Reference in New Issue
Block a user