Changeset 3443 for src/Pugs/Eval.hs
- Timestamp:
- 05/19/05 17:57:17 (4 years ago)
- svk:copy_cache_prev:
- 5016
- Files:
-
- 1 modified
-
src/Pugs/Eval.hs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Eval.hs
r3417 r3443 78 78 , envEval = evaluate 79 79 , envCaller = Nothing 80 , envOuter = Nothing 80 81 , envDepth = 0 81 82 , envID = uniq … … 191 192 maybeCaller <- asks envCaller 192 193 case maybeCaller of 193 Just caller -> local (const caller) $ do194 Just env -> local (const env) $ do 194 195 findVarRef (sig ++ name') 195 196 Nothing -> retError "cannot access CALLER:: in top level" name 197 | Just (package, name') <- breakOnGlue "::" name 198 , Just (sig, "") <- breakOnGlue "OUTER" package = do 199 maybeOuter <- asks envOuter 200 case maybeOuter of 201 Just env -> local (const env) $ do 202 findVarRef (sig ++ name') 203 Nothing -> retError "cannot access OUTER:: in top level" name 196 204 | ('$':'?':_) <- name = do 197 205 rv <- getMagical name … … 349 357 let [exp] = exps 350 358 (VCode sub) <- enterEvalContext (cxtItem "Code") exp 351 lex <- asks envLexical352 retVal $ VCode sub{ sub Pad = lex}359 env <- ask 360 retVal $ VCode sub{ subEnv = Just env } 353 361 "if" -> doCond id 354 362 "unless" -> doCond not … … 370 378 genSymCC "&next" $ \symNext -> do 371 379 genSymPrim "&redo" (const $ runBody vs sub') $ \symRedo -> do 372 apply sub'{ subPad = symRedo . symNext $ subPad sub' }[] $380 apply (updateSubPad sub' (symRedo . symNext)) [] $ 373 381 map (Val . VRef . MkRef) these 374 382 runBody rest sub' … … 376 384 let munge sub | subParams sub == [defaultArrayParam] = 377 385 munge sub{ subParams = [defaultScalarParam] } 378 munge sub = sub{ subPad = symLast $ subPad sub }386 munge sub = updateSubPad sub symLast 379 387 runBody elms $ munge sub 380 388 "loop" -> do
