FIR IDE: add info about nullability to KtType

This commit is contained in:
Ilya Kirillov
2020-08-06 15:39:30 +03:00
parent 16d22ae7e3
commit 9f33d0147c
2 changed files with 17 additions and 2 deletions
@@ -19,11 +19,23 @@ interface KtType : ValidityTokenOwner {
fun asStringForDebugging(): String
}
interface KtTypeWithNullability : KtType {
val nullability: KtTypeNullability
}
enum class KtTypeNullability {
NULLABLE, NON_NULLABLE;
companion object {
fun create(isNullable: Boolean) = if (isNullable) NULLABLE else NON_NULLABLE
}
}
sealed class KtDenotableType : KtType {
abstract fun asString(): String
}
abstract class KtClassType : KtDenotableType() {
abstract class KtClassType : KtDenotableType(), KtTypeWithNullability {
abstract val classId: ClassId
abstract val classSymbol: KtClassLikeSymbol
abstract val typeArguments: List<KtTypeArgument>
@@ -33,7 +45,7 @@ abstract class KtErrorType : KtType {
abstract val error: String
}
abstract class KtTypeParameterType : KtDenotableType() {
abstract class KtTypeParameterType : KtDenotableType(), KtTypeWithNullability {
abstract val name: Name
abstract val symbol: KtTypeParameterSymbol
}
@@ -65,6 +65,7 @@ internal class KtFirClassType(
firBuilder.buildTypeArgument(typeArgument)
}
}
override val nullability: KtTypeNullability get() = withValidityAssertion { KtTypeNullability.create(coneType.isNullable) }
override fun asString(): String = withValidityAssertion {
coneType.render() //todo
@@ -97,6 +98,8 @@ internal class KtFirTypeParameterType(
?: error("Type parameter ${coneType.lookupTag} was not found")
}
override val nullability: KtTypeNullability get() = withValidityAssertion { KtTypeNullability.create(coneType.isNullable) }
override fun asString(): String = withValidityAssertion {
coneType.render() //todo
}