FIR: Add different extension for FirSession.inferenceContext

This commit is contained in:
Denis Zharkov
2019-12-11 15:00:20 +03:00
parent b33d0c2594
commit 28f4d62ccf
4 changed files with 9 additions and 8 deletions
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.IntegerLiteralTypeApproxima
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperator
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperatorCall
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
@@ -72,7 +71,7 @@ class Fir2IrVisitor(
private val UNARY_OPERATIONS: Set<FirOperation> = EnumSet.of(FirOperation.EXCL)
}
private val integerApproximator = IntegerLiteralTypeApproximationTransformer(session.firSymbolProvider, session.typeContext)
private val integerApproximator = IntegerLiteralTypeApproximationTransformer(session.firSymbolProvider, session.inferenceContext)
private val typeContext = session.typeContext
@@ -9,8 +9,9 @@ import org.jetbrains.kotlin.fir.resolve.calls.ConeInferenceContext
import org.jetbrains.kotlin.fir.types.ConeTypeCheckerContext
import org.jetbrains.kotlin.fir.types.ConeTypeContext
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
import org.jetbrains.kotlin.types.model.TypeSystemContext
private class SessionBasedTypeContext(override val session: FirSession) : ConeInferenceContext {
private class SessionBasedInferenceContext(override val session: FirSession) : ConeInferenceContext {
override fun newBaseTypeCheckerContext(
errorTypesEqualToAnything: Boolean,
stubTypesEqualToAnything: Boolean
@@ -19,4 +20,5 @@ private class SessionBasedTypeContext(override val session: FirSession) : ConeIn
}
}
val FirSession.typeContext: ConeInferenceContext get() = SessionBasedTypeContext(this)
val FirSession.inferenceContext: ConeInferenceContext get() = SessionBasedInferenceContext(this)
val FirSession.typeContext: ConeTypeContext get() = inferenceContext
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.*
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.typeContext
import org.jetbrains.kotlin.fir.inferenceContext
import org.jetbrains.kotlin.fir.types.*
abstract class SupertypeSupplier {
@@ -87,7 +87,7 @@ private fun createSubstitution(
}
else /* StarProjection */ -> {
ConeTypeIntersector.intersectTypes(
session.typeContext,
session.inferenceContext,
typeParameterSymbol.fir.bounds.map { it.coneTypeUnsafe() }
)
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.calls.InferenceComponents
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.typeContext
import org.jetbrains.kotlin.fir.inferenceContext
import org.jetbrains.kotlin.fir.types.FirTypeRef
inline fun <reified T : FirElement> FirBasedSymbol<*>.firUnsafe(): T {
@@ -35,6 +35,6 @@ internal fun inferenceComponents(
returnTypeCalculator: ReturnTypeCalculator,
scopeSession: ScopeSession
): InferenceComponents {
val inferenceContext = session.typeContext
val inferenceContext = session.inferenceContext
return InferenceComponents(inferenceContext, session, returnTypeCalculator, scopeSession)
}