Commit 4db2c92c authored by Josef Svenningsson's avatar Josef Svenningsson

Extcore can now handle data types without constructors

parent b764b345
......@@ -64,7 +64,8 @@ collect_tdefs tcon tdefs
where
tdef | isNewTyCon tcon =
C.Newtype (make_con_qid (tyConName tcon)) (map make_tbind tyvars) repclause
| null (tyConDataCons tcon) = error "MkExternalCore died: can't handle datatype declarations with no data constructors"
-- 20060420 GHC handles empty data types just fine. ExtCore should too! jds
-- | null (tyConDataCons tcon) = error "MkExternalCore died: can't handle datatype declarations with no data constructors"
| otherwise =
C.Data (make_con_qid (tyConName tcon)) (map make_tbind tyvars) (map make_cdef (tyConDataCons tcon))
where repclause | isRecursiveTyCon tcon = Nothing
......
......@@ -82,7 +82,7 @@ tdefs :: { [TyClDecl RdrName] }
| tdef ';' tdefs {$1:$3}
tdef :: { TyClDecl RdrName }
: '%data' q_tc_name tv_bndrs '=' '{' cons1 '}'
: '%data' q_tc_name tv_bndrs '=' '{' cons '}'
{ mkTyData DataType (noLoc [], noLoc (ifaceExtRdrName $2), map toHsTvBndr $3) Nothing $6 Nothing }
| '%newtype' q_tc_name tv_bndrs trep
{ let tc_rdr = ifaceExtRdrName $2 in
......@@ -97,9 +97,9 @@ trep :: { OccName -> [LConDecl RdrName] }
in [noLoc $ ConDecl (noLoc dc_name) Explicit []
(noLoc []) con_info ResTyH98]) }
cons1 :: { [LConDecl RdrName] }
: con { [$1] }
| con ';' cons1 { $1:$3 }
cons :: { [LConDecl RdrName] }
: {- empty -} { [] } -- 20060420 Empty data types allowed. jds
| con ';' cons { $1:$3 }
con :: { LConDecl RdrName }
: d_pat_occ attv_bndrs hs_atys
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment