FIR. Do not re-resolve parts of intersection types

This commit is contained in:
Simon Ogorodnik
2022-02-11 23:04:53 +03:00
committed by Space
parent 857fe985b2
commit bf3a3caee6
@@ -486,27 +486,11 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() {
is FirFunctionTypeRef -> createFunctionalType(typeRef) to null is FirFunctionTypeRef -> createFunctionalType(typeRef) to null
is FirDynamicTypeRef -> ConeErrorType(ConeUnsupportedDynamicType()) to null is FirDynamicTypeRef -> ConeErrorType(ConeUnsupportedDynamicType()) to null
is FirIntersectionTypeRef -> { is FirIntersectionTypeRef -> {
val (leftType, leftDiagnostic) = resolveType( val leftType = typeRef.leftType.coneType
typeRef.leftType val rightType = typeRef.rightType.coneType
?: return ConeErrorType(ConeSimpleDiagnostic("Problem during processing intersection type")) to null,
scopeClassDeclaration,
areBareTypesAllowed,
isOperandOfIsOperator,
useSiteFile,
supertypeSupplier
)
val (rightType, _) = resolveType(
typeRef.rightType
?: return ConeErrorType(ConeSimpleDiagnostic("Problem during processing intersection type")) to null,
scopeClassDeclaration,
areBareTypesAllowed,
isOperandOfIsOperator,
useSiteFile,
supertypeSupplier
)
if (rightType.isAny && leftType is ConeTypeParameterType) { if (rightType.isAny && leftType is ConeTypeParameterType) {
ConeDefinitelyNotNullType(leftType) to leftDiagnostic //how properly concat (leftDiagnostic + rightDiagnostic)? ConeDefinitelyNotNullType(leftType) to null
} else { } else {
ConeErrorType(ConeUnsupported("Intersection types are not supported yet", typeRef.source)) to null ConeErrorType(ConeUnsupported("Intersection types are not supported yet", typeRef.source)) to null
} }