Minor performance improvements in tryToCompleteWithBuilderInference

This commit is contained in:
Mikhail Glukhikh
2022-01-20 18:28:56 +03:00
committed by teamcity
parent 98cdc95cd0
commit 756ff6cf43
2 changed files with 6 additions and 4 deletions
@@ -188,14 +188,15 @@ class ConstraintSystemCompleter(components: BodyResolveComponents, private val c
// We assume useBuilderInferenceWithoutAnnotation = true for FIR
val builder = getBuilder()
for (argument in lambdaArguments) {
val notFixedInputTypeVariables = argument.inputTypes
.map { it.extractTypeVariables() }.flatten().filter { it !in fixedTypeVariables }
.flatMap { it.extractTypeVariables() }.filter { it !in fixedTypeVariables }
if (notFixedInputTypeVariables.isEmpty()) continue
for (variable in notFixedInputTypeVariables) {
getBuilder().markPostponedVariable(notFixedTypeVariables.getValue(variable).typeVariable)
builder.markPostponedVariable(notFixedTypeVariables.getValue(variable).typeVariable)
}
analyze(argument)
@@ -216,17 +216,18 @@ class KotlinConstraintSystemCompleter(
val useBuilderInferenceWithoutAnnotation =
languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceWithoutAnnotation)
val builder = getBuilder()
for (argument in lambdaArguments) {
if (!argument.atom.hasBuilderInferenceAnnotation && !useBuilderInferenceWithoutAnnotation)
continue
val notFixedInputTypeVariables = argument.inputTypes
.map { it.extractTypeVariables() }.flatten().filter { it !in fixedTypeVariables }
.flatMap { it.extractTypeVariables() }.filter { it !in fixedTypeVariables }
if (notFixedInputTypeVariables.isEmpty()) continue
for (variable in notFixedInputTypeVariables) {
getBuilder().markPostponedVariable(notFixedTypeVariables.getValue(variable).typeVariable)
builder.markPostponedVariable(notFixedTypeVariables.getValue(variable).typeVariable)
}
analyze(argument)