FIR: fix capturing on intersection types #KT-48109 Fixed

This commit is contained in:
Mikhail Glukhikh
2021-08-05 14:05:24 +03:00
parent a04913a197
commit a21d281c19
9 changed files with 99 additions and 26 deletions
@@ -318,6 +318,15 @@ private fun Candidate.captureTypeFromExpressionOrNull(argumentType: ConeKotlinTy
return captureTypeFromExpressionOrNull(argumentType.lowerBound, context)
}
if (argumentType is ConeIntersectionType) {
val intersectedTypes = argumentType.intersectedTypes.map { captureTypeFromExpressionOrNull(it, context) ?: it }
if (intersectedTypes == argumentType.intersectedTypes) return null
return ConeIntersectionType(
intersectedTypes,
argumentType.alternativeType?.let { captureTypeFromExpressionOrNull(it, context) ?: it }
)
}
if (argumentType !is ConeClassLikeType) return null
argumentType.fullyExpandedType(context.session).let {