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.KotlinChainTransformerImpl
|
||||||
import org.jetbrains.kotlin.idea.debugger.sequence.psi.impl.TerminatedChainBuilder
|
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.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.psi.sequence.SequenceTypeExtractor
|
||||||
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinCollectionsPeekCallFactory
|
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinCollectionsPeekCallFactory
|
||||||
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinStatementFactory
|
import org.jetbrains.kotlin.idea.debugger.sequence.trace.dsl.KotlinStatementFactory
|
||||||
@@ -22,7 +23,7 @@ class KotlinSequenceSupportProvider : LibrarySupportProvider {
|
|||||||
private companion object {
|
private companion object {
|
||||||
val builder: StreamChainBuilder = TerminatedChainBuilder(
|
val builder: StreamChainBuilder = TerminatedChainBuilder(
|
||||||
KotlinChainTransformerImpl(SequenceTypeExtractor()),
|
KotlinChainTransformerImpl(SequenceTypeExtractor()),
|
||||||
SequenceCallChecker()
|
SequenceCallCheckerWithNameHeuristics(SequenceCallChecker())
|
||||||
)
|
)
|
||||||
val support = KotlinSequencesSupport()
|
val support = KotlinSequencesSupport()
|
||||||
val dsl = DslImpl(KotlinStatementFactory(KotlinCollectionsPeekCallFactory()))
|
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.idea.debugger.sequence.psi.StreamCallChecker
|
||||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||||
|
|
||||||
class SequenceCallCheckerByName(private val nestedChecker: StreamCallChecker) : StreamCallChecker {
|
class SequenceCallCheckerWithNameHeuristics(private val nestedChecker: StreamCallChecker) : StreamCallChecker {
|
||||||
private companion object {
|
private companion object {
|
||||||
val TERMINATION_CALLS: Set<String> = setOf(
|
val TERMINATION_CALLS: Set<String> = setOf(
|
||||||
"all", "any", "associate", "associateBy", "associateByTo", "associateTo", "average", "chunked", "contains", "count", "distinct",
|
"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 {
|
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