Changeset 22990 for src/Pugs/AST.hs

Show
Ignore:
Timestamp:
11/12/08 10:01:29 (8 weeks ago)
Author:
audreyt
Message:

* GHC 6.10 support, part 3 of 3: Adjust for GADT's "rigid types" restriction.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/AST.hs

    r20058 r22990  
    194194                , mc_variants   = Set.singleton var 
    195195                } 
    196             merge _ old = case old of 
    197                 PEConstant{ pe_proto = MkRef (ICode oldCV) } 
    198                     | Just (mc :: VMultiCode) <- fromTypeable oldCV -> protoEntry 
    199                         { pe_proto = MkRef . ICode $ protoCode 
    200                             { mc_assoc      = code_assoc c `mappend` code_assoc mc 
    201                             , mc_variants   = Set.insert var (mc_variants mc) 
    202                             , mc_signature  = if length (mc_signature mc) == length (code_params c) 
    203                                 then code_params c 
    204                                 else [defaultArrayParam] 
    205                             } 
     196            merge :: PadEntry -> PadEntry -> PadEntry 
     197            merge _ PEConstant{ pe_proto = MkRef (ICode oldCV) } 
     198                | Just (mc :: VMultiCode) <- fromTypeable oldCV 
     199                = protoEntry 
     200                    { pe_proto = MkRef . ICode $ protoCode 
     201                        { mc_assoc      = code_assoc c `mappend` code_assoc mc 
     202                        , mc_variants   = Set.insert var (mc_variants mc) 
     203                        , mc_signature  = if length (mc_signature mc) == length (code_params c) 
     204                            then code_params c 
     205                            else [defaultArrayParam] 
    206206                        } 
    207                 _ -> old -- sub overrides multi -- XXX - error? 
     207                    } 
     208            merge _ old = old -- sub overrides multi -- XXX - error? 
    208209       in MkPad (Map.insertWith' merge var' protoEntry (Map.insert var entry map)) 
    209210    | otherwise = MkPad (Map.insert var entry map)