[FIR] Get rid of FirSession.inferenceContext
Leave only FirSession.typeContext
This commit is contained in:
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.*
|
import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
||||||
import org.jetbrains.kotlin.fir.serialization.FirElementSerializer
|
import org.jetbrains.kotlin.fir.serialization.FirElementSerializer
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
|
||||||
@@ -62,7 +62,7 @@ class FirJvmClassCodegen(
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
private val approximator = object : AbstractTypeApproximator(session.inferenceContext) {
|
private val approximator = object : AbstractTypeApproximator(session.typeContext) {
|
||||||
override fun createErrorType(message: String): SimpleTypeMarker {
|
override fun createErrorType(message: String): SimpleTypeMarker {
|
||||||
return ConeKotlinErrorType(message)
|
return ConeKotlinErrorType(message)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class Fir2IrVisitor(
|
|||||||
|
|
||||||
private val integerApproximator = IntegerLiteralTypeApproximationTransformer(
|
private val integerApproximator = IntegerLiteralTypeApproximationTransformer(
|
||||||
session.firSymbolProvider,
|
session.firSymbolProvider,
|
||||||
session.inferenceContext,
|
session.typeContext,
|
||||||
session
|
session
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -297,7 +297,7 @@ class Fir2IrVisitor(
|
|||||||
return conversionScope.withSafeCallSubject(receiverVariable) {
|
return conversionScope.withSafeCallSubject(receiverVariable) {
|
||||||
val afterNotNullCheck = safeCallExpression.regularQualifiedAccess.accept(this, data) as IrExpression
|
val afterNotNullCheck = safeCallExpression.regularQualifiedAccess.accept(this, data) as IrExpression
|
||||||
|
|
||||||
val isReceiverNullable = with(components.session.inferenceContext) {
|
val isReceiverNullable = with(components.session.typeContext) {
|
||||||
safeCallExpression.receiver.typeRef.coneTypeSafe<ConeKotlinType>()?.isNullableType() == true
|
safeCallExpression.receiver.typeRef.coneTypeSafe<ConeKotlinType>()?.isNullableType() == true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.builder.buildQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
|
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
|
|||||||
@@ -9,6 +9,5 @@ import org.jetbrains.kotlin.fir.types.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
|
||||||
|
|
||||||
val FirSession.inferenceContext: ConeInferenceContext
|
val FirSession.typeContext: ConeInferenceContext
|
||||||
get() = ConeTypeCheckerContext(isErrorTypeEqualsToAnything = false, isStubTypeEqualsToAnything = false, this)
|
get() = ConeTypeCheckerContext(isErrorTypeEqualsToAnything = false, isStubTypeEqualsToAnything = false, this)
|
||||||
val FirSession.typeContext: ConeTypeContext get() = inferenceContext
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirResolvedReifiedParameterReferenceBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirResolvedReifiedParameterReferenceBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionWithSmartcast
|
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionWithSmartcast
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||||
@@ -367,7 +367,7 @@ private fun BodyResolveComponents.typeFromSymbol(symbol: AbstractFirBasedSymbol<
|
|||||||
val returnType = returnTypeCalculator.tryCalculateReturnType(symbol.phasedFir)
|
val returnType = returnTypeCalculator.tryCalculateReturnType(symbol.phasedFir)
|
||||||
if (makeNullable) {
|
if (makeNullable) {
|
||||||
returnType.withReplacedConeType(
|
returnType.withReplacedConeType(
|
||||||
returnType.coneTypeUnsafe<ConeKotlinType>().withNullability(ConeNullability.NULLABLE, session.inferenceContext),
|
returnType.coneTypeUnsafe<ConeKotlinType>().withNullability(ConeNullability.NULLABLE, session.typeContext),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
returnType
|
returnType
|
||||||
@@ -444,11 +444,11 @@ fun FirSafeCallExpression.propagateTypeFromQualifiedAccessAfterNullCheck(
|
|||||||
) {
|
) {
|
||||||
val receiverType = nullableReceiverExpression.typeRef.coneTypeSafe<ConeKotlinType>()
|
val receiverType = nullableReceiverExpression.typeRef.coneTypeSafe<ConeKotlinType>()
|
||||||
val typeAfterNullCheck = regularQualifiedAccess.expressionTypeOrUnitForAssignment() ?: return
|
val typeAfterNullCheck = regularQualifiedAccess.expressionTypeOrUnitForAssignment() ?: return
|
||||||
val isReceiverActuallyNullable = receiverType != null && session.inferenceContext.run { receiverType.isNullableType() }
|
val isReceiverActuallyNullable = receiverType != null && session.typeContext.run { receiverType.isNullableType() }
|
||||||
|
|
||||||
val resultingType =
|
val resultingType =
|
||||||
if (isReceiverActuallyNullable)
|
if (isReceiverActuallyNullable)
|
||||||
typeAfterNullCheck.withNullability(ConeNullability.NULLABLE, session.inferenceContext)
|
typeAfterNullCheck.withNullability(ConeNullability.NULLABLE, session.typeContext)
|
||||||
else
|
else
|
||||||
typeAfterNullCheck
|
typeAfterNullCheck
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterBuilder
|
|||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticFunctionSymbol
|
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||||
@@ -92,7 +92,7 @@ class FirSamResolverImpl(
|
|||||||
val result =
|
val result =
|
||||||
substitutor
|
substitutor
|
||||||
.substituteOrSelf(unsubstitutedFunctionType)
|
.substituteOrSelf(unsubstitutedFunctionType)
|
||||||
.withNullability(ConeNullability.create(type.isMarkedNullable), firSession.inferenceContext)
|
.withNullability(ConeNullability.create(type.isMarkedNullable), firSession.typeContext)
|
||||||
|
|
||||||
require(result is ConeLookupTagBasedType) {
|
require(result is ConeLookupTagBasedType) {
|
||||||
"Function type should always be ConeLookupTagBasedType, but ${result::class} was found"
|
"Function type should always be ConeLookupTagBasedType, but ${result::class} was found"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||||
@@ -70,7 +70,7 @@ fun createSubstitution(
|
|||||||
}
|
}
|
||||||
else /* StarProjection */ -> {
|
else /* StarProjection */ -> {
|
||||||
ConeTypeIntersector.intersectTypes(
|
ConeTypeIntersector.intersectTypes(
|
||||||
session.inferenceContext,
|
session.typeContext,
|
||||||
typeParameterSymbol.fir.bounds.map { it.coneTypeUnsafe() }
|
typeParameterSymbol.fir.bounds.map { it.coneTypeUnsafe() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
||||||
@@ -223,7 +223,7 @@ fun Candidate.resolvePlainArgumentType(
|
|||||||
|
|
||||||
val argumentTypeForApplicabilityCheck =
|
val argumentTypeForApplicabilityCheck =
|
||||||
if (useNullableArgumentType)
|
if (useNullableArgumentType)
|
||||||
capturedType.withNullability(ConeNullability.NULLABLE, session.inferenceContext)
|
capturedType.withNullability(ConeNullability.NULLABLE, session.typeContext)
|
||||||
else
|
else
|
||||||
capturedType
|
capturedType
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ private fun checkApplicabilityForArgumentType(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val nullableExpectedType = expectedType.withNullability(ConeNullability.NULLABLE, sink.components.session.inferenceContext)
|
val nullableExpectedType = expectedType.withNullability(ConeNullability.NULLABLE, sink.components.session.typeContext)
|
||||||
|
|
||||||
if (csBuilder.addSubtypeConstraintIfCompatible(argumentType, nullableExpectedType, position)) {
|
if (csBuilder.addSubtypeConstraintIfCompatible(argumentType, nullableExpectedType, position)) {
|
||||||
sink.reportApplicability(CandidateApplicability.WRONG_RECEIVER) // TODO
|
sink.reportApplicability(CandidateApplicability.WRONG_RECEIVER) // TODO
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
@@ -310,7 +310,7 @@ private fun FirSession.createKFunctionType(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val returnType =
|
val returnType =
|
||||||
if (expectedReturnType != null && inferenceContext.run { expectedReturnType.isUnit() })
|
if (expectedReturnType != null && typeContext.run { expectedReturnType.isUnit() })
|
||||||
expectedReturnType
|
expectedReturnType
|
||||||
else
|
else
|
||||||
returnTypeRef.coneTypeSafe() ?: ConeKotlinErrorType("No type for return type of $function")
|
returnTypeRef.coneTypeSafe() ?: ConeKotlinErrorType("No type for return type of $function")
|
||||||
|
|||||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList
|
import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall
|
import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirStubReference
|
import org.jetbrains.kotlin.fir.references.impl.FirStubReference
|
||||||
@@ -208,7 +208,7 @@ class FirSyntheticCallGenerator(
|
|||||||
val (typeParameter, returnType) = generateSyntheticSelectTypeParameter()
|
val (typeParameter, returnType) = generateSyntheticSelectTypeParameter()
|
||||||
|
|
||||||
val argumentType = buildResolvedTypeRef {
|
val argumentType = buildResolvedTypeRef {
|
||||||
type = returnType.coneTypeUnsafe<ConeKotlinType>().withNullability(ConeNullability.NULLABLE, session.inferenceContext)
|
type = returnType.coneTypeUnsafe<ConeKotlinType>().withNullability(ConeNullability.NULLABLE, session.typeContext)
|
||||||
}
|
}
|
||||||
val typeArgument = buildTypeProjectionWithVariance {
|
val typeArgument = buildTypeProjectionWithVariance {
|
||||||
typeRef = returnType
|
typeRef = returnType
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
|
|||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.inferenceContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.renderWithType
|
import org.jetbrains.kotlin.fir.renderWithType
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||||
@@ -35,6 +35,6 @@ internal fun inferenceComponents(
|
|||||||
returnTypeCalculator: ReturnTypeCalculator,
|
returnTypeCalculator: ReturnTypeCalculator,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): InferenceComponents {
|
): InferenceComponents {
|
||||||
val inferenceContext = session.inferenceContext
|
val inferenceContext = session.typeContext
|
||||||
return InferenceComponents(inferenceContext, session, returnTypeCalculator, scopeSession)
|
return InferenceComponents(inferenceContext, session, returnTypeCalculator, scopeSession)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -420,7 +420,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
|
|||||||
resolved.resultType =
|
resolved.resultType =
|
||||||
conversionTypeRef.withReplacedConeType(
|
conversionTypeRef.withReplacedConeType(
|
||||||
conversionTypeRef.coneTypeUnsafe<ConeKotlinType>().withNullability(
|
conversionTypeRef.coneTypeUnsafe<ConeKotlinType>().withNullability(
|
||||||
ConeNullability.NULLABLE, session.inferenceContext,
|
ConeNullability.NULLABLE, session.typeContext,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user