[FIR] Extract ResolutionContext to separate file

This commit is contained in:
Dmitriy Novozhilov
2020-09-09 12:38:08 +03:00
parent 1a84ec9677
commit f748d8cf70
2 changed files with 25 additions and 14 deletions
@@ -0,0 +1,25 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.resolve.calls
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
class ResolutionContext(
val session: FirSession,
val bodyResolveComponents: BodyResolveComponents,
val bodyResolveContext: BodyResolveContext
) {
val inferenceComponents: InferenceComponents
get() = session.inferenceComponents
val returnTypeCalculator: ReturnTypeCalculator
get() = bodyResolveComponents.returnTypeCalculator
}
@@ -15,8 +15,6 @@ import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
import org.jetbrains.kotlin.fir.references.FirSuperReference
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.inference.*
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
@@ -31,18 +29,6 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.SimpleConstraintSystem
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind.*
data class ResolutionContext(
val session: FirSession,
val bodyResolveComponents: BodyResolveComponents,
val bodyResolveContext: BodyResolveContext
) {
val inferenceComponents: InferenceComponents
get() = session.inferenceComponents
val returnTypeCalculator: ReturnTypeCalculator
get() = bodyResolveComponents.returnTypeCalculator
}
abstract class ResolutionStage {
abstract suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext)
}