[FIR] Add flexible default upper bound for java type parameters

This commit is contained in:
Dmitriy Novozhilov
2020-03-25 17:17:56 +03:00
parent c23a11a6fc
commit 3acb64c536
35 changed files with 63 additions and 53 deletions
@@ -12,11 +12,21 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.coneTypeSafe
fun FirTypeParameterBuilder.addDefaultBoundIfNecessary() {
fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = false) {
if (bounds.isEmpty()) {
bounds += session.builtinTypes.nullableAnyType
val type = if (isFlexible) {
val session = this.session
buildResolvedTypeRef {
type = ConeFlexibleType(session.builtinTypes.anyType.type, session.builtinTypes.nullableAnyType.type)
}
} else {
session.builtinTypes.nullableAnyType
}
bounds += type
}
}