Initialize builder inference lambda anyway, even a call is inapplicable

^KT-47744 Fixed
This commit is contained in:
Victor Petukhov
2021-07-15 11:17:27 +03:00
committed by teamcityserver
parent 2b0ba6fa40
commit 357fda2efa
19 changed files with 227 additions and 1 deletions
@@ -30,6 +30,8 @@ interface InferenceSession {
diagnosticsHolder: KotlinDiagnosticsHolder
): Map<TypeConstructor, UnwrappedType> = emptyMap()
override fun initializeLambda(lambda: ResolvedLambdaAtom) { }
override fun writeOnlyStubs(callInfo: SingleCallResolutionResult): Boolean = false
override fun callCompleted(resolvedAtom: ResolvedAtom): Boolean = false
override fun shouldCompleteResolvedSubAtomsOf(resolvedCallAtom: ResolvedCallAtom) = true
@@ -53,6 +55,8 @@ interface InferenceSession {
diagnosticsHolder: KotlinDiagnosticsHolder
): Map<TypeConstructor, UnwrappedType>?
fun initializeLambda(lambda: ResolvedLambdaAtom)
fun writeOnlyStubs(callInfo: SingleCallResolutionResult): Boolean
fun callCompleted(resolvedAtom: ResolvedAtom): Boolean
fun shouldCompleteResolvedSubAtomsOf(resolvedCallAtom: ResolvedCallAtom): Boolean
@@ -147,6 +147,7 @@ class PostponedArgumentsAnalyzer(
returnArgumentsAnalysisResult
if (hasInapplicableCallForBuilderInference) {
inferenceSession?.initializeLambda(lambda)
c.getBuilder().removePostponedVariables()
return
}