Changeset 12424 for src/Pugs/Eval
- Timestamp:
- 08/18/06 20:49:06 (2 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Eval/Var.hs (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Eval/Var.hs
r12382 r12424 396 396 { subName = buf 397 397 , subType = SubPrim 398 , subAssoc = "spre"398 , subAssoc = ANil 399 399 , subParams = makeParams $ 400 400 if any isLValue (subParams code) … … 412 412 413 413 metaVar :: Pkg -> Var 414 -- metaVar = MkVar SType TN one globalPkg CNone. cast414 -- metaVar = MkVar SType TNil globalPkg CNil . cast 415 415 metaVar pkg = cast (':':'*':cast pkg) 416 416 {- … … 419 419 , v_twigil = TGlobal 420 420 , v_package = emptyPkg 421 , v_categ = CN one421 , v_categ = CNil 422 422 , v_name = cast pkg 423 423 } … … 587 587 588 588 findSyms :: Var -> Eval [(Var, Val)] 589 findSyms var 590 | Just var' <- dropVarPkg (__"OUTER") var = do 591 maybeOuter <- asks envOuter 592 case maybeOuter of 593 Just env -> local (const env) $ findSyms var' 594 Nothing -> return [] 589 595 findSyms var = do 590 596 runMaybeT findAll >>= maybe (return []) return … … 635 641 arityMatch :: VCode -> Int -> Int -> Maybe VCode 636 642 arityMatch sub@MkCode{ subAssoc = assoc, subParams = prms } argLen argSlurpLen 637 | assoc == "list" || assoc == "chain"638 = Just sub643 | A_list <- assoc = Just sub 644 | A_chain <- assoc = Just sub 639 645 | isNothing $ find (not . isSlurpy) prms -- XXX - what about empty ones? 640 , assoc == "pre"641 646 , slurpLen <- length $ filter (\p -> isSlurpy p && v_sigil (paramName p) == SScalar) prms 642 647 , hasArray <- isJust $ find (\p -> isSlurpy p && v_sigil (paramName p) /= SScalar) prms … … 660 665 661 666 toQualified :: Var -> Eval Var 662 toQualified var 663 | TNone /= v_twigil var = return var 664 | emptyPkg /= v_package var = return var 665 | otherwise = do 666 pkg <- asks envPackage 667 return var{ v_package = pkg } 667 toQualified var@MkVar{ v_twigil = TNil, v_package = pkg } 668 | pkg == emptyPkg = do 669 currentPkg <- asks envPackage 670 return var{ v_package = currentPkg } 671 toQualified var = return var
