[NI] Simplify creation of resolution callbacks
This commit is contained in:
+4
-7
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.TemporaryBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver
|
||||
import org.jetbrains.kotlin.resolve.calls.components.InferenceSession
|
||||
import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionCallbacks
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
import org.jetbrains.kotlin.resolve.calls.context.ContextDependency
|
||||
import org.jetbrains.kotlin.resolve.calls.model.LambdaKotlinCallArgument
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ReceiverKotlinCallArgument
|
||||
@@ -45,17 +45,16 @@ import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class KotlinResolutionCallbacksImpl(
|
||||
topLevelCallContext: BasicCallResolutionContext,
|
||||
val trace: BindingTrace,
|
||||
val expressionTypingServices: ExpressionTypingServices,
|
||||
val typeApproximator: TypeApproximator,
|
||||
val argumentTypeResolver: ArgumentTypeResolver,
|
||||
val languageVersionSettings: LanguageVersionSettings,
|
||||
val kotlinToResolvedCallTransformer: KotlinToResolvedCallTransformer,
|
||||
val constantExpressionEvaluator: ConstantExpressionEvaluator,
|
||||
val dataFlowValueFactory: DataFlowValueFactory
|
||||
val dataFlowValueFactory: DataFlowValueFactory,
|
||||
override val inferenceSession: InferenceSession
|
||||
) : KotlinResolutionCallbacks {
|
||||
val trace: BindingTrace = topLevelCallContext.trace
|
||||
|
||||
class LambdaInfo(val expectedType: UnwrappedType, val contextDependency: ContextDependency) {
|
||||
var dataFlowInfoAfter: DataFlowInfo? = null
|
||||
val returnStatements = ArrayList<Pair<KtReturnExpression, KotlinTypeInfo?>>()
|
||||
@@ -182,8 +181,6 @@ class KotlinResolutionCallbacksImpl(
|
||||
return constantExpressionEvaluator.evaluateExpression(expression, temporaryBindingTrace, expectedType) != null
|
||||
}
|
||||
|
||||
override val inferenceSession = topLevelCallContext.inferenceSession
|
||||
|
||||
private fun findCommonParent(callElement: KtExpression, receiver: ReceiverKotlinCallArgument?): KtExpression {
|
||||
if (receiver == null) return callElement
|
||||
return PsiTreeUtil.findCommonParent(callElement, receiver.psiExpression)?.safeAs() ?: callElement
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.createLookupLocation
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.isSafeCall
|
||||
import org.jetbrains.kotlin.resolve.calls.components.InferenceSession
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
import org.jetbrains.kotlin.resolve.calls.context.ContextDependency
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.buildResultingSubstitutor
|
||||
@@ -150,10 +151,13 @@ class PSICallResolver(
|
||||
}
|
||||
|
||||
private fun createResolutionCallbacks(context: BasicCallResolutionContext) =
|
||||
createResolutionCallbacks(context.trace, context.inferenceSession)
|
||||
|
||||
fun createResolutionCallbacks(trace: BindingTrace, inferenceSession: InferenceSession) =
|
||||
KotlinResolutionCallbacksImpl(
|
||||
context, expressionTypingServices, typeApproximator,
|
||||
trace, expressionTypingServices, typeApproximator,
|
||||
argumentTypeResolver, languageVersionSettings, kotlinToResolvedCallTransformer,
|
||||
constantExpressionEvaluator, dataFlowValueFactory
|
||||
constantExpressionEvaluator, dataFlowValueFactory, inferenceSession
|
||||
)
|
||||
|
||||
private fun calculateExpectedType(context: BasicCallResolutionContext): UnwrappedType? {
|
||||
|
||||
Reference in New Issue
Block a user