Teach the dynamic-cast machinery how to cast collection element types.

This commit is contained in:
John McCall
2016-07-23 10:30:10 -07:00
parent 9870b8eaeb
commit 232a314a9f
6 changed files with 412 additions and 16 deletions

View File

@@ -39,6 +39,16 @@ enum class DynamicCastFeasibility {
WillFail,
};
static inline DynamicCastFeasibility
atWorst(DynamicCastFeasibility feasibility, DynamicCastFeasibility worstCase) {
return (feasibility > worstCase ? worstCase : feasibility);
}
static inline DynamicCastFeasibility
atBest(DynamicCastFeasibility feasibility, DynamicCastFeasibility bestCase) {
return (feasibility < bestCase ? bestCase : feasibility);
}
/// Classify the feasibility of a dynamic cast. The source and target
/// types should be unlowered formal types.
DynamicCastFeasibility classifyDynamicCast(