diff options
author | Richard Eisenberg <eir@cis.upenn.edu> | 2013-07-02 21:07:07 +0100 |
---|---|---|
committer | Richard Eisenberg <eir@cis.upenn.edu> | 2013-07-02 21:26:17 +0100 |
commit | 67aacde3c9ec04b6e8e8e1d921001b218eb5244f (patch) | |
tree | 71699de766071cacda31e86c211a2bf5a6a3faf6 | |
parent | 1ae72ac45e51e63cbf6f3d627d77acc6a36aa0f9 (diff) | |
download | haskell-67aacde3c9ec04b6e8e8e1d921001b218eb5244f.tar.gz |
Fix Trac #8028.
Check for an empty list of equations when converting
a closed type family from TH to an HsDecl.
-rw-r--r-- | compiler/hsSyn/Convert.lhs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/hsSyn/Convert.lhs b/compiler/hsSyn/Convert.lhs index a07fafe00d..f7d5bdb084 100644 --- a/compiler/hsSyn/Convert.lhs +++ b/compiler/hsSyn/Convert.lhs @@ -251,10 +251,13 @@ cvtDec (TySynInstD tc eqn) , tfid_fvs = placeHolderNames } } } cvtDec (ClosedTypeFamilyD tc tyvars mkind eqns) + | not $ null eqns = do { (_, tc', tvs') <- cvt_tycl_hdr [] tc tyvars ; mkind' <- cvtMaybeKind mkind ; eqns' <- mapM (cvtTySynEqn tc') eqns ; returnL $ TyClD (FamDecl (FamilyDecl (ClosedTypeFamily eqns') tc' tvs' mkind')) } + | otherwise + = failWith (ptext (sLit "Illegal empty closed type family")) ---------------- cvtTySynEqn :: Located RdrName -> TySynEqn -> CvtM (LTyFamInstEqn RdrName) cvtTySynEqn tc (TySynEqn lhs rhs) |