Ignore diagnostics in ShadowedDeclarationsFilter
During code completion, ShadowedDeclarationsFilter resolves many synthetic calls (sometimes >1000 for certain projects/scenarios). By ignoring diagnostics we can avoid running call checkers during this process (pending a sibling change in the compiler). Relates to KT-44276 and github.com/JetBrains/kotlin/pull/4027
This commit is contained in:
committed by
Nikita Bobko
parent
e2109c3f8f
commit
958b0ff24a
+5
-1
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.idea.resolve.getDataFlowValueFactory
|
|||||||
import org.jetbrains.kotlin.idea.resolve.getLanguageVersionSettings
|
import org.jetbrains.kotlin.idea.resolve.getLanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingTraceFilter.Companion.NO_DIAGNOSTICS
|
||||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorEquivalenceForOverrides
|
import org.jetbrains.kotlin.resolve.DescriptorEquivalenceForOverrides
|
||||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
|
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
|
||||||
@@ -103,7 +104,10 @@ class ShadowedDeclarationsFilter(
|
|||||||
|
|
||||||
val dummyArgumentExpressions = dummyExpressionFactory.createDummyExpressions(parameters.size)
|
val dummyArgumentExpressions = dummyExpressionFactory.createDummyExpressions(parameters.size)
|
||||||
|
|
||||||
val bindingTrace = DelegatingBindingTrace(bindingContext, "Temporary trace for filtering shadowed declarations")
|
val bindingTrace = DelegatingBindingTrace(
|
||||||
|
bindingContext, "Temporary trace for filtering shadowed declarations",
|
||||||
|
filter = NO_DIAGNOSTICS
|
||||||
|
)
|
||||||
for ((expression, parameter) in dummyArgumentExpressions.zip(parameters)) {
|
for ((expression, parameter) in dummyArgumentExpressions.zip(parameters)) {
|
||||||
bindingTrace.recordType(expression, parameter.varargElementType ?: parameter.type)
|
bindingTrace.recordType(expression, parameter.varargElementType ?: parameter.type)
|
||||||
bindingTrace.record(BindingContext.PROCESSED, expression, true)
|
bindingTrace.record(BindingContext.PROCESSED, expression, true)
|
||||||
|
|||||||
Reference in New Issue
Block a user