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:
Matthew Gharrity
2021-01-12 16:47:58 +01:00
committed by Nikita Bobko
parent e2109c3f8f
commit 958b0ff24a

View File

@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.idea.resolve.getDataFlowValueFactory
import org.jetbrains.kotlin.idea.resolve.getLanguageVersionSettings
import org.jetbrains.kotlin.psi.*
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.DescriptorEquivalenceForOverrides
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
@@ -103,7 +104,10 @@ class ShadowedDeclarationsFilter(
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)) {
bindingTrace.recordType(expression, parameter.varargElementType ?: parameter.type)
bindingTrace.record(BindingContext.PROCESSED, expression, true)