FIR: Add different extension for FirSession.inferenceContext
This commit is contained in:
@@ -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.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperator
|
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.AccessorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -72,7 +71,7 @@ class Fir2IrVisitor(
|
|||||||
private val UNARY_OPERATIONS: Set<FirOperation> = EnumSet.of(FirOperation.EXCL)
|
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
|
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.ConeTypeCheckerContext
|
||||||
import org.jetbrains.kotlin.fir.types.ConeTypeContext
|
import org.jetbrains.kotlin.fir.types.ConeTypeContext
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
|
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(
|
override fun newBaseTypeCheckerContext(
|
||||||
errorTypesEqualToAnything: Boolean,
|
errorTypesEqualToAnything: Boolean,
|
||||||
stubTypesEqualToAnything: 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.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.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.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
|
|
||||||
abstract class SupertypeSupplier {
|
abstract class SupertypeSupplier {
|
||||||
@@ -87,7 +87,7 @@ private fun createSubstitution(
|
|||||||
}
|
}
|
||||||
else /* StarProjection */ -> {
|
else /* StarProjection */ -> {
|
||||||
ConeTypeIntersector.intersectTypes(
|
ConeTypeIntersector.intersectTypes(
|
||||||
session.typeContext,
|
session.inferenceContext,
|
||||||
typeParameterSymbol.fir.bounds.map { it.coneTypeUnsafe() }
|
typeParameterSymbol.fir.bounds.map { it.coneTypeUnsafe() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -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.calls.InferenceComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|
||||||
inline fun <reified T : FirElement> FirBasedSymbol<*>.firUnsafe(): T {
|
inline fun <reified T : FirElement> FirBasedSymbol<*>.firUnsafe(): T {
|
||||||
@@ -35,6 +35,6 @@ internal fun inferenceComponents(
|
|||||||
returnTypeCalculator: ReturnTypeCalculator,
|
returnTypeCalculator: ReturnTypeCalculator,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): InferenceComponents {
|
): InferenceComponents {
|
||||||
val inferenceContext = session.typeContext
|
val inferenceContext = session.inferenceContext
|
||||||
return InferenceComponents(inferenceContext, session, returnTypeCalculator, scopeSession)
|
return InferenceComponents(inferenceContext, session, returnTypeCalculator, scopeSession)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user