Empty case expressions have strict semantics so the
problem boils down to inhabitation checking for the
type of the scrutinee. 3 main functions added:
- pmTopNormaliseType_maybe for the normalisation of the scrutinee type
- inhabitationCandidates for generating the possible patterns of the appropriate type
- checkEmptyCase' to filter out the candidates that give rise to unsatisfiable constraints.
See Note [Checking EmptyCase Expressions] in Check
and Note [Type normalisation for EmptyCase] in FamInstEnv