Use heuristics with call name to avoid redundant types resolve
This commit is contained in:
committed by
Yan Zhulanow
parent
9b24600b0f
commit
e1acd2e2c5
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.impl.KotlinChainTransformerImpl
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.impl.TerminatedChainBuilder
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.sequence.SequenceCallChecker
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.sequence.SequenceCallCheckerWithNameHeuristics
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.sequence.SequenceTypeExtractor
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinCollectionsPeekCallFactory
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinStatementFactory
|
||||
@@ -22,7 +23,7 @@ class KotlinSequenceSupportProvider : LibrarySupportProvider {
|
||||
private companion object {
|
||||
val builder: StreamChainBuilder = TerminatedChainBuilder(
|
||||
KotlinChainTransformerImpl(SequenceTypeExtractor()),
|
||||
SequenceCallChecker()
|
||||
SequenceCallCheckerWithNameHeuristics(SequenceCallChecker())
|
||||
)
|
||||
val support = KotlinSequencesSupport()
|
||||
val dsl = DslImpl(KotlinStatementFactory(KotlinCollectionsPeekCallFactory()))
|
||||
|
||||
+7
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.debugger.sequence.psi.sequence
|
||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.StreamCallChecker
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
|
||||
class SequenceCallCheckerByName(private val nestedChecker: StreamCallChecker) : StreamCallChecker {
|
||||
class SequenceCallCheckerWithNameHeuristics(private val nestedChecker: StreamCallChecker) : StreamCallChecker {
|
||||
private companion object {
|
||||
val TERMINATION_CALLS: Set<String> = setOf(
|
||||
"all", "any", "associate", "associateBy", "associateByTo", "associateTo", "average", "chunked", "contains", "count", "distinct",
|
||||
@@ -25,6 +25,11 @@ class SequenceCallCheckerByName(private val nestedChecker: StreamCallChecker) :
|
||||
}
|
||||
|
||||
override fun isTerminationCall(expression: KtCallExpression): Boolean {
|
||||
return TERMINATION_CALLS.contains(expression.name) && nestedChecker.isTerminationCall(expression)
|
||||
val name = expression.calleeExpression?.text
|
||||
if (name != null) {
|
||||
return TERMINATION_CALLS.contains(name) && nestedChecker.isTerminationCall(expression)
|
||||
}
|
||||
|
||||
return nestedChecker.isTerminationCall(expression)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user