Propagate inference session into declaration analyzers

It prevents missing inference session for local declaration (local functions, local classes or objects)

^KT-44801 Fixed
This commit is contained in:
Victor Petukhov
2021-02-12 13:58:27 +03:00
parent dae1f4c05d
commit 6f64fd2fec
19 changed files with 150 additions and 42 deletions
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
import org.jetbrains.kotlin.resolve.lazy.*
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext
import java.util.*
import java.util.concurrent.ConcurrentMap
@@ -677,7 +678,7 @@ class ResolveElementCache(
ForceResolveUtil.forceResolveAllContents(functionDescriptor)
val bodyResolver = createBodyResolver(resolveSession, trace, file, statementFilter)
bodyResolver.resolveFunctionBody(DataFlowInfo.EMPTY, trace, namedFunction, functionDescriptor, scope)
bodyResolver.resolveFunctionBody(DataFlowInfo.EMPTY, trace, namedFunction, functionDescriptor, scope, null)
forceResolveAnnotationsInside(namedFunction)
@@ -696,7 +697,7 @@ class ResolveElementCache(
ForceResolveUtil.forceResolveAllContents(constructorDescriptor)
val bodyResolver = createBodyResolver(resolveSession, trace, file, statementFilter)
bodyResolver.resolveSecondaryConstructorBody(DataFlowInfo.EMPTY, trace, constructor, constructorDescriptor, scope)
bodyResolver.resolveSecondaryConstructorBody(DataFlowInfo.EMPTY, trace, constructor, constructorDescriptor, scope, null)
forceResolveAnnotationsInside(constructor)
@@ -835,6 +836,8 @@ class ResolveElementCache(
override fun getOuterDataFlowInfo(): DataFlowInfo = DataFlowInfo.EMPTY
override fun getTopDownAnalysisMode() = topDownAnalysisMode
override fun getLocalContext(): ExpressionTypingContext? = null
}
companion object {