import DataCon ( dataConFieldLabels, dataConArgTys )
import MatchCon ( matchConFamily )
import MatchLit ( matchLiterals )
-import PrelVals ( pAT_ERROR_ID )
+import PrelInfo ( pAT_ERROR_ID )
import Type ( isUnLiftedType, splitAlgTyConApp,
Type
)
tidy1 v (RecPat data_con pat_ty tvs dicts rpats) match_result
= returnDs (ConPat data_con pat_ty tvs dicts pats, match_result)
where
- {-
- Special case to handle C{}, where C is a constructor
- that hasn't got any labelled fields - the Haskell98 report
- doesn't seem to make that constraint (not that I think it
- should).
- -- sof 5/99
- -}
- pats
- | null con_flabels = map (WildPat) con_arg_tys'
- | otherwise = map mk_pat tagged_arg_tys
+ pats = map mk_pat tagged_arg_tys
-- Boring stuff to find the arg-tys of the constructor
(_, inst_tys, _) = splitAlgTyConApp pat_ty
con_arg_tys' = dataConArgTys data_con inst_tys
- con_flabels = dataConFieldLabels data_con
- tagged_arg_tys = con_arg_tys' `zip` con_flabels
+ tagged_arg_tys = con_arg_tys' `zip` (dataConFieldLabels data_con)
-- mk_pat picks a WildPat of the appropriate type for absent fields,
-- and the specified pattern for present fields