[project @ 2002-04-10 13:09:39 by simonmar]
authorsimonmar <unknown>
Wed, 10 Apr 2002 13:09:39 +0000 (13:09 +0000)
committersimonmar <unknown>
Wed, 10 Apr 2002 13:09:39 +0000 (13:09 +0000)
(from Simon P.J) Make generics work with zero-constructor datatypes.

ghc/compiler/types/Generics.lhs

index d961aa8..744b667 100644 (file)
@@ -254,8 +254,12 @@ mkTyConGenInfo tycon [from_name, to_name]
        | dc <- datacons ]
   = Nothing
 
+  | null datacons      -- There are no constructors; 
+  = Nothing            -- there are no values of this type
+
   | otherwise
-  = Just (EP { fromEP = mkVanillaGlobal from_name from_ty from_id_info,
+  = ASSERT( not (null datacons) )      -- mk_sum_stuff loops if no datacons
+    Just (EP { fromEP = mkVanillaGlobal from_name from_ty from_id_info,
               toEP   = mkVanillaGlobal to_name   to_ty   to_id_info })
   where
     maybe_datacons = tyConDataCons_maybe tycon