[FIR] Make ConeTypeCheckerContext implements ConeInferenceContext

This commit is contained in:
Dmitriy Novozhilov
2019-12-03 11:21:27 +03:00
parent 69033b7b15
commit 71bf8a14e8
3 changed files with 21 additions and 20 deletions
@@ -298,4 +298,23 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext,
override fun TypeConstructorMarker.isCapturedTypeConstructor(): Boolean {
return this is ConeCapturedTypeConstructor
}
override fun TypeConstructorMarker.getApproximatedIntegerLiteralType(): KotlinTypeMarker {
TODO()
}
override fun KotlinTypeMarker.removeExactAnnotation(): KotlinTypeMarker {
// TODO
return this
}
override fun TypeConstructorMarker.toErrorType(): SimpleTypeMarker {
require(this is ErrorTypeConstructor)
return ConeClassErrorType(reason)
}
override fun findCommonIntegerLiteralTypesSuperType(explicitSupertypes: List<SimpleTypeMarker>): SimpleTypeMarker? {
// TODO: implement
return null
}
}
@@ -43,26 +43,8 @@ internal interface UniversalConeInferenceContext :
internal fun FirSession.inferenceContext(): UniversalConeInferenceContext {
val session = this
return object : UniversalConeInferenceContext {
override fun findCommonIntegerLiteralTypesSuperType(explicitSupertypes: List<SimpleTypeMarker>): SimpleTypeMarker? {
// TODO: implement
return null
}
override fun TypeConstructorMarker.getApproximatedIntegerLiteralType(): KotlinTypeMarker {
TODO("not implemented")
}
override val session: FirSession
get() = session
override fun KotlinTypeMarker.removeExactAnnotation(): KotlinTypeMarker {
return this
}
override fun TypeConstructorMarker.toErrorType(): SimpleTypeMarker {
require(this is ErrorTypeConstructor)
return ConeClassErrorType(reason)
}
}
}
@@ -496,7 +496,7 @@ class ConeTypeCheckerContext(
override val isErrorTypeEqualsToAnything: Boolean,
override val isStubTypeEqualsToAnything: Boolean,
override val session: FirSession
) : AbstractTypeCheckerContext(), ConeTypeContext {
) : AbstractTypeCheckerContext(), ConeInferenceContext {
override fun substitutionSupertypePolicy(type: SimpleTypeMarker): SupertypesPolicy {
if (type.argumentsCount() == 0) return SupertypesPolicy.LowerIfFlexible
require(type is ConeKotlinType)
@@ -530,7 +530,7 @@ class ConeTypeCheckerContext(
}
override fun prepareType(type: KotlinTypeMarker): KotlinTypeMarker {
return super<ConeTypeContext>.prepareType(type)
return super<ConeInferenceContext>.prepareType(type)
}
override fun refineType(type: KotlinTypeMarker): KotlinTypeMarker {