Delegate refineType and prepareType in TypeCheckerState to special services
This is needed to add ability to create type system independent TypeCheckerState
This commit is contained in:
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.types.AbstractTypeRefiner
|
||||
import org.jetbrains.kotlin.types.TypeCheckerState
|
||||
import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.DoCustomTransform
|
||||
import org.jetbrains.kotlin.types.TypeCheckerState.SupertypesPolicy.LowerIfFlexible
|
||||
@@ -571,8 +572,10 @@ class ConeTypeCheckerState(
|
||||
override val isErrorTypeEqualsToAnything: Boolean,
|
||||
override val isStubTypeEqualsToAnything: Boolean,
|
||||
override val typeSystemContext: ConeInferenceContext,
|
||||
val kotlinTypePreparator: ConeTypePreparator = ConeTypePreparator.getDefault(typeSystemContext.session),
|
||||
override val kotlinTypePreparator: ConeTypePreparator = ConeTypePreparator(typeSystemContext.session),
|
||||
) : TypeCheckerState() {
|
||||
override val kotlinTypeRefiner: AbstractTypeRefiner
|
||||
get() = AbstractTypeRefiner.Default
|
||||
|
||||
val session: FirSession = typeSystemContext.session
|
||||
|
||||
@@ -604,14 +607,6 @@ class ConeTypeCheckerState(
|
||||
}
|
||||
}
|
||||
|
||||
override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker {
|
||||
return kotlinTypePreparator.prepareType(type)
|
||||
}
|
||||
|
||||
override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker {
|
||||
return kotlinTypePreparator.prepareType(type)
|
||||
}
|
||||
|
||||
override val KotlinTypeMarker.isAllowedTypeVariable: Boolean
|
||||
get() = this is ConeKotlinType && this is ConeTypeVariableType
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.types.AbstractTypePreparator
|
||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||
|
||||
abstract class ConeTypePreparator(val session: FirSession) : AbstractTypePreparator {
|
||||
class ConeTypePreparator(val session: FirSession) : AbstractTypePreparator() {
|
||||
override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker {
|
||||
return when (type) {
|
||||
is ConeClassLikeType -> type.fullyExpandedType(session)
|
||||
@@ -26,8 +26,4 @@ abstract class ConeTypePreparator(val session: FirSession) : AbstractTypePrepara
|
||||
else -> type
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getDefault(session: FirSession) = object : ConeTypePreparator(session) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user