X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fiface%2FBuildTyCl.lhs;h=738a5e33bfcd9ff46e45160406f24bfe060e2e82;hp=54adfdf84c761649f39b7cb3ef799622f4c65fa1;hb=215ce9f15215399ce30ae55c9521087847d78646;hpb=09d2b3b2e1f9d0a4c4b938dc6ff6a0b068138445 diff --git a/compiler/iface/BuildTyCl.lhs b/compiler/iface/BuildTyCl.lhs index 54adfdf..738a5e3 100644 --- a/compiler/iface/BuildTyCl.lhs +++ b/compiler/iface/BuildTyCl.lhs @@ -121,7 +121,12 @@ mkDataTyConRhs cons = DataTyCon { data_cons = cons, is_enum = -- We define datatypes with no constructors to not be - -- enumerations; this fixes trac #2578 + -- enumerations; this fixes trac #2578, Otherwise we + -- end up generating an empty table for + -- __closure_tbl + -- which is used by tagToEnum# to map Int# to constructors + -- in an enumeration. The empty table apparently upset + -- the linker. not (null cons) && all isNullarySrcDataCon cons } @@ -186,7 +191,7 @@ setAssocFamilyPermutation _clas_tvs other ------------------------------------------------------ buildDataCon :: Name -> Bool - -> [StrictnessMark] + -> [HsBang] -> [Name] -- Field labels -> [TyVar] -> [TyVar] -- Univ and ext -> [(TyVar,Type)] -- Equality spec @@ -301,7 +306,7 @@ buildClass no_unf class_name tvs sc_theta fds ats sig_stuff tc_isrec ; dict_con <- buildDataCon datacon_name False -- Not declared infix - (map (const NotMarkedStrict) args) + (map (const HsNoBang) args) [{- No fields -}] tvs [{- no existentials -}] [{- No GADT equalities -}] [{- No theta -}]