Expand ConeTypeContext, implement FIR type inference & related checkers

This commit is contained in:
Simon Ogorodnik
2019-03-19 16:49:37 +03:00
committed by Mikhail Glukhikh
parent f1eb66819b
commit 1dae135840
37 changed files with 1784 additions and 188 deletions
@@ -123,8 +123,9 @@ class ConeFlexibleType(val lowerBound: ConeLookupTagBasedType, val upperBound: C
get() = lowerBound.nullability.takeIf { it == upperBound.nullability } ?: ConeNullability.UNKNOWN
}
class ConeCapturedTypeConstructor(val projection: ConeKotlinTypeProjection) : TypeConstructorMarker {
var supertypes: List<ConeKotlinType>? = null
class ConeCapturedTypeConstructor(val projection: ConeKotlinTypeProjection, var supertypes: List<ConeKotlinType>? = null) :
TypeConstructorMarker {
}
class ConeCapturedType(
@@ -143,4 +144,18 @@ class ConeCapturedType(
override val typeArguments: Array<out ConeKotlinTypeProjection>
get() = emptyArray()
}
class ConeTypeVariableType(
override val nullability: ConeNullability,
override val lookupTag: ConeClassifierLookupTag
) : ConeLookupTagBasedType() {
override val typeArguments: Array<out ConeKotlinTypeProjection> get() = emptyArray()
}
class ConeDefinitelyNotNullType(val original: ConeKotlinType): ConeKotlinType(), DefinitelyNotNullTypeMarker {
override val typeArguments: Array<out ConeKotlinTypeProjection>
get() = original.typeArguments
override val nullability: ConeNullability
get() = ConeNullability.NOT_NULL
}