Changeset 14304 for src/Pugs/Eval

Show
Ignore:
Timestamp:
10/12/06 23:26:58 (2 years ago)
Author:
audreyt
svk:copy_cache_prev:
21165
Message:

* Pugs.Eval.Var: Infer (Syn "//" ...) as Regex, not Any,

thus closing the MMD bug TimToady?++ pointed out.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Eval/Var.hs

    r14203 r14304  
    508508inferExpType (Syn "=>" _)   = return $ mkType "Pair" 
    509509inferExpType (Syn "named" [_, exp])   = inferExpType exp 
     510inferExpType (Syn "rx" _)   = return $ mkType "Regex" 
     511inferExpType (Syn "match" _)= return $ mkType "Match" 
     512inferExpType (Syn "//" _)   = return $ mkType "Regex" -- XXX Wrong 
    510513inferExpType exp@(Syn "{}" [_, idxExp]) = if isSimpleExp exp 
    511514    then fromVal =<< enterRValue (evalExp exp) 
     
    533536    then cxtItemAny 
    534537    else cxtSlurpyAny 
    535 {- 
    536 inferExpCxt :: Exp -- ^ Expression to find the context of 
    537          -> Eval Cxt 
    538 inferExpCxt (Ann (Pos {}) exp)           = inferExpCxt exp 
    539 inferExpCxt (Ann (Cxt cxt) _)            = return cxt 
    540 inferExpCxt (Syn "," _)            = return cxtSlurpyAny 
    541 inferExpCxt (Syn "[]" [_, exp])    = inferExpCxt exp 
    542 inferExpCxt (Syn "{}" [_, exp])    = inferExpCxt exp 
    543 inferExpCxt (Syn (sigil:"{}") _) = return $ cxtOfSigil sigil 
    544 inferExpCxt (Val (VList {}))       = return cxtSlurpyAny 
    545 inferExpCxt (Val (VRef ref))       = do 
    546     cls <- asks envClasses 
    547     let typ = refType ref 
    548     return $ if isaType cls "List" typ 
    549         then cxtSlurpyAny 
    550         else CxtItem typ 
    551 inferExpCxt (Val {})                = return cxtItemAny 
    552 inferExpCxt (Var (sigil:_))         = return $ cxtOfSigil sigil 
    553 inferExpCxt (App (Var "&list") _ _) = return cxtSlurpyAny 
    554 inferExpCxt (App (Var "&item") _ _) = return cxtSlurpyAny 
    555 inferExpCxt (App (Var name) invs args)   = do 
    556     -- inspect the return type of the function here 
    557     env <- ask 
    558     sub <- findSub name invs args 
    559     return $ case sub of 
    560         Right sub 
    561             | isaType (envClasses env) "Scalar" (subReturns sub) 
    562             -> CxtItem (subReturns sub) 
    563         _ -> cxtSlurpyAny 
    564 inferExpCxt _                      = return cxtSlurpyAny 
    565 -} 
    566538 
    567539{-|