Changeset 22990 for src/Pugs/Parser

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/Parser/Operator.hs

    r21673 r22990  
    204204        Nothing -> do 
    205205            ref <- readPadEntry entry 
    206             case ref of 
    207                 MkRef (ICode cv) 
    208                     | relevantToParsing (code_type cv) (code_assoc cv) -> do 
    209                         let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) 
    210                             res = seq rv (Just rv) 
    211                         unsafeIOToSTM (H.insert _RefToFunction entry res) 
    212                         return res 
    213                 MkRef (IScalar sv) 
    214                     | Just (VCode cv) <- scalar_const sv 
    215                     , relevantToParsing (code_type cv) (code_assoc cv) -> do 
    216                         let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) 
    217                             res = seq rv (Just rv) 
    218                         unsafeIOToSTM (H.insert _RefToFunction entry res) 
    219                         return res 
    220                 _ -> do 
    221                     unsafeIOToSTM (H.insert _RefToFunction entry Nothing) 
    222                     return Nothing 
     206            filterRef ref 
     207    where 
     208    filterRef :: VRef -> STM (Maybe CurrentFunction) 
     209    filterRef (MkRef (ICode cv)) 
     210        | relevantToParsing (code_type cv) (code_assoc cv) = do 
     211            let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) 
     212                res = seq rv (Just rv) 
     213            unsafeIOToSTM (H.insert _RefToFunction entry res) 
     214            return res 
     215    filterRef (MkRef (IScalar sv)) 
     216        | Just (VCode cv) <- scalar_const sv 
     217        , relevantToParsing (code_type cv) (code_assoc cv) = do 
     218            let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) 
     219                res = seq rv (Just rv) 
     220            unsafeIOToSTM (H.insert _RefToFunction entry res) 
     221            return res 
     222    filterRef _ = do 
     223        unsafeIOToSTM (H.insert _RefToFunction entry Nothing) 
     224        return Nothing 
    223225 
    224226inScope :: Pkg -> Var -> Bool