From 393688ad8274f68331ce99a88238acff8fb1cede Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 25 Sep 2020 15:46:58 +0300 Subject: [PATCH] [FIR] Add extension to FirSession to get ConeTypeCheckerContext --- .../fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt | 4 ++++ .../kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt | 3 ++- .../kotlin/fir/resolve/inference/InferenceComponents.kt | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt index 1858b5357a8..642351c70b4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt @@ -13,10 +13,14 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope import org.jetbrains.kotlin.fir.types.ConeInferenceContext +import org.jetbrains.kotlin.fir.types.ConeTypeCheckerContext val FirSession.typeContext: ConeInferenceContext get() = inferenceComponents.ctx +val FirSession.typeCheckerContext: ConeTypeCheckerContext + get() = inferenceComponents.ctx + /** * Returns the list of functions that overridden by given */ diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt index f9c45c36064..618aa611b3d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol +import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.name.Name @@ -160,7 +161,7 @@ private class TowerScopeLevelProcessor( val declarationReceiverType = (symbol as? FirCallableSymbol<*>)?.fir?.receiverTypeRef?.coneType if (declarationReceiverType is ConeClassLikeType) { if (!AbstractTypeChecker.isSubtypeOf( - candidateFactory.context.inferenceComponents.ctx, + candidateFactory.context.session.typeContext, extensionReceiverType, declarationReceiverType.lookupTag.constructClassType( declarationReceiverType.typeArguments.map { ConeStarProjection }.toTypedArray(), diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceComponents.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceComponents.kt index 10c7d4b44c6..e4448ffcae4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceComponents.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceComponents.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.types.AbstractTypeApproximator @NoMutableState class InferenceComponents(val session: FirSession) : FirSessionComponent { - val ctx: ConeInferenceContext = ConeTypeCheckerContext(isErrorTypeEqualsToAnything = false, isStubTypeEqualsToAnything = false, session) + val ctx: ConeTypeCheckerContext = ConeTypeCheckerContext(isErrorTypeEqualsToAnything = false, isStubTypeEqualsToAnything = false, session) val approximator: AbstractTypeApproximator = object : AbstractTypeApproximator(ctx) {} val trivialConstraintTypeInferenceOracle = TrivialConstraintTypeInferenceOracle.create(ctx)