Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
4db2c92c
Commit
4db2c92c
authored
Apr 20, 2006
by
Josef Svenningsson
Browse files
Extcore can now handle data types without constructors
parent
b764b345
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/coreSyn/MkExternalCore.lhs
View file @
4db2c92c
...
...
@@ -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
...
...
compiler/parser/ParserCore.y
View file @
4db2c92c
...
...
@@ -82,7 +82,7 @@ tdefs :: { [TyClDecl RdrName] }
| tdef ';' tdefs {$1:$3}
tdef :: { TyClDecl RdrName }
: '%data' q_tc_name tv_bndrs '=' '{' cons
1
'}'
: '%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]) }
cons
1
:: { [LConDecl RdrName] }
:
con
{ [
$1
] }
| con ';' cons
1
{ $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
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment