[project @ 2005-07-25 11:42:24 by simonpj]
authorsimonpj <unknown>
Mon, 25 Jul 2005 11:42:25 +0000 (11:42 +0000)
committersimonpj <unknown>
Mon, 25 Jul 2005 11:42:25 +0000 (11:42 +0000)
Comments

ghc/compiler/basicTypes/IdInfo.lhs
ghc/compiler/iface/BuildTyCl.lhs

index 20dcbe2..5797436 100644 (file)
@@ -236,9 +236,9 @@ data GlobalIdDetails
   | DataConWorkId DataCon      -- The Id for a data constructor *worker*
   | DataConWrapId DataCon      -- The Id for a data constructor *wrapper*
                                -- [the only reasons we need to know is so that
-                               --  a) we can  suppress printing a definition in the interface file
-                               --  b) when typechecking a pattern we can get from the
-                               --     Id back to the data con]
+                               --  a) to support isImplicitId
+                               --  b) when desugaring a RecordCon we can get 
+                               --     from the Id back to the data con]
 
   | ClassOpId Class            -- An operation of a class
 
@@ -674,12 +674,12 @@ zapLamInfo info@(IdInfo {occInfo = occ, newDemandInfo = demand})
   where
        -- The "unsafe" occ info is the ones that say I'm not in a lambda
        -- because that might not be true for an unsaturated lambda
-    is_safe_occ (OneOcc in_lam once) = in_lam
-    is_safe_occ other               = True
+    is_safe_occ (OneOcc in_lam _ _) = in_lam
+    is_safe_occ other              = True
 
     safe_occ = case occ of
-                OneOcc _ once -> OneOcc insideLam once
-                other         -> occ
+                OneOcc _ once min_args -> OneOcc insideLam once min_args
+                other                  -> occ
 
     is_safe_dmd Nothing    = True
     is_safe_dmd (Just dmd) = not (isStrictDmd dmd)
index 9383ae3..60c5f34 100644 (file)
@@ -128,8 +128,8 @@ buildDataCon src_name declared_infix vanilla arg_stricts field_lbls
   = do { wrap_name <- newImplicitBinder src_name mkDataConWrapperOcc
        ; work_name <- newImplicitBinder src_name mkDataConWorkerOcc
        -- This last one takes the name of the data constructor in the source
-       -- code, which (for Haskell source anyway) will be in the SrcDataName name
-       -- space, and makes it into a "real data constructor name"
+       -- code, which (for Haskell source anyway) will be in the DataName name
+       -- space, and puts it into the VarName name space
 
        ; let
                stupid_ctxt = mkDataConStupidTheta tycon arg_tys res_tys