FIR: approximate intersections in public position properly
#KT-48166 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
7b0e5927cb
commit
19ab0ab2f8
@@ -283,12 +283,15 @@ fun FirTypeRef.withReplacedConeType(
|
||||
fun FirTypeRef.approximated(
|
||||
typeApproximator: ConeTypeApproximator,
|
||||
toSuper: Boolean,
|
||||
conf: TypeApproximatorConfiguration = TypeApproximatorConfiguration.PublicDeclaration
|
||||
): FirTypeRef {
|
||||
val alternativeType = (coneType as? ConeIntersectionType)?.alternativeType ?: coneType
|
||||
if (alternativeType !== coneType && !alternativeType.requiresApproximationInPublicPosition()) {
|
||||
return withReplacedConeType(alternativeType)
|
||||
}
|
||||
val approximatedType = if (toSuper)
|
||||
typeApproximator.approximateToSuperType(coneType, conf)
|
||||
typeApproximator.approximateToSuperType(alternativeType, TypeApproximatorConfiguration.PublicDeclaration)
|
||||
else
|
||||
typeApproximator.approximateToSubType(coneType, conf)
|
||||
typeApproximator.approximateToSubType(alternativeType, TypeApproximatorConfiguration.PublicDeclaration)
|
||||
return withReplacedConeType(approximatedType)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user