[FIR2IR] Fix superQualifier in case of composed super type ref

This commit is contained in:
simon.ogorodnik
2020-05-27 20:50:16 +03:00
parent 8afbb4542b
commit 99b2a4745a
15 changed files with 244 additions and 14 deletions
@@ -10,9 +10,17 @@ import org.jetbrains.kotlin.fir.expressions.FirConstKind
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.name.ClassId
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
inline fun <reified T : ConeKotlinType> FirTypeRef.coneTypeUnsafe() = (this as FirResolvedTypeRef).type as T
inline fun <reified T : ConeKotlinType> FirTypeRef.coneTypeSafe() = (this as? FirResolvedTypeRef)?.type as? T
@OptIn(ExperimentalContracts::class)
inline fun <reified T : ConeKotlinType> FirTypeRef.coneTypeSafe(): T? {
contract {
returnsNotNull() implies (this@coneTypeSafe is FirResolvedTypeRef)
}
return (this as? FirResolvedTypeRef)?.type as? T
}
val FirTypeRef.isAny: Boolean get() = isBuiltinType(StandardClassIds.Any, false)
val FirTypeRef.isNullableAny: Boolean get() = isBuiltinType(StandardClassIds.Any, true)