[FE 1.0] Store builder inference session in the corresponding lambda argument

This commit is contained in:
Victor Petukhov
2021-12-24 12:55:56 +03:00
committed by teamcity
parent 74f294d849
commit 4dc9b291e5
3 changed files with 13 additions and 0 deletions
@@ -213,6 +213,7 @@ class KotlinResolutionCallbacksImpl(
null
}
lambdaArgument.builderInferenceSession = builderInferenceSession
val temporaryTrace = if (builderInferenceSession != null)
TemporaryBindingTrace.create(trace, "Trace to resolve builder inference lambda: $lambdaArgument")
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.StatementFilter
import org.jetbrains.kotlin.resolve.TypeResolver
import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver
import org.jetbrains.kotlin.resolve.calls.components.InferenceSession
import org.jetbrains.kotlin.resolve.calls.util.getCall
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
import org.jetbrains.kotlin.resolve.calls.model.*
@@ -115,6 +116,12 @@ class LambdaKotlinCallArgumentImpl(
assert(!field)
field = value
}
override var builderInferenceSession: InferenceSession? = null
set(value) {
assert(field == null)
field = value
}
}
class FunctionExpressionImpl(
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.components.InferenceSession
import org.jetbrains.kotlin.resolve.scopes.receivers.DetailedReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.QualifierReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValueWithSmartCastInfo
@@ -60,6 +61,10 @@ interface LambdaKotlinCallArgument : PostponableKotlinCallArgument {
get() = false
set(@Suppress("UNUSED_PARAMETER") value) {}
var builderInferenceSession: InferenceSession?
get() = null
set(@Suppress("UNUSED_PARAMETER") value) {}
/**
* parametersTypes == null means, that there is no declared arguments
* null inside array means that this type is not declared explicitly