Replace usage of ClassicTCContext with abstract context in NewCSTCalculator

This commit is contained in:
Dmitriy Novozhilov
2019-07-25 11:57:37 +03:00
committed by Mikhail Glukhikh
parent 0276a6262f
commit 6215662e33
4 changed files with 18 additions and 7 deletions
@@ -5,8 +5,14 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.fir.types.ConeTypeCheckerContext
import org.jetbrains.kotlin.fir.types.ConeTypeContext
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
private class SessionBasedTypeContext(override val session: FirSession) : ConeTypeContext
private class SessionBasedTypeContext(override val session: FirSession) : ConeTypeContext {
override fun newBaseTypeCheckerContext(errorTypesEqualToAnything: Boolean): AbstractTypeCheckerContext {
return ConeTypeCheckerContext(errorTypesEqualToAnything, session)
}
}
val FirSession.typeContext: ConeTypeContext get() = SessionBasedTypeContext(this)
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.types.model.*
class ErrorTypeConstructor(reason: String) : TypeConstructorMarker
interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext {
interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, TypeCheckerProviderContext {
val session: FirSession
override fun TypeConstructorMarker.isIntegerLiteralTypeConstructor(): Boolean {
@@ -460,4 +460,10 @@ class ConeTypeCheckerContext(override val isErrorTypeEqualsToAnything: Boolean,
override val KotlinTypeMarker.isAllowedTypeVariable: Boolean
get() = this is ConeKotlinType && this is ConeTypeVariableType
override fun newBaseTypeCheckerContext(errorTypesEqualToAnything: Boolean): AbstractTypeCheckerContext =
if (this.isErrorTypeEqualsToAnything == errorTypesEqualToAnything)
this
else
ConeTypeCheckerContext(errorTypesEqualToAnything, session)
}