Changeset 16487
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Monads.hs
r16418 r16487 305 305 local doFix runAction 306 306 307 _ | typ >= SubBlock -> tryT $ do 307 -- _ | typ >= SubBlock -> tryT $ do 308 _ -> tryT $ do 308 309 doFix <- fixEnv return env pad 309 310 local doFix runAction 310 311 {- 311 312 _ -> tryT . callCC $ \cc -> do 312 313 doFix <- fixEnv cc env pad 313 314 local doFix runAction 315 -} 314 316 315 317 -- warn "XXX" () … … 329 331 else retControl l{ leaveDepth = depth' } 330 332 VControl ControlExit{} -> retShift rv 331 VError{} -> do 332 -- XXX - Implement CATCH block here 333 retShift rv 333 VError{} -> retShift rv -- XXX - Implement CATCH block here 334 334 _ -> return rv 335 335 where … … 361 361 362 362 fixEnv :: (Val -> Eval Val) -> Env -> Pad -> Eval (Env -> Env) 363 fixEnv cc env pad363 fixEnv _cc env pad 364 364 | SubPrim <- typ = do 365 365 return $ \e -> e -
src/Pugs/Prim.hs
r16379 r16487 379 379 return $ VBool True 380 380 op1 "die" = \v -> do 381 pos <- asks envPos382 381 v' <- fromVal $! v 383 retShift $! VError (errmsg $! v') [pos] 382 env <- ask 383 retShift $! VError (errmsg $! v') (collectPos (Just env)) 384 384 where 385 385 errmsg VUndef = VStr "Died" … … 389 389 errmsg (VList [x]) = x 390 390 errmsg x = x 391 collectPos Nothing = [] 392 collectPos (Just env) = (envPos env:collectPos (envCaller env)) 391 393 op1 "warn" = \v -> do 392 394 strs <- fromVal v 393 395 errh <- readVar $ cast "$*ERR" 394 pos <- asks envPos395 op2 "IO::say" errh $ VList [ VStr $ pretty (VError (errmsg strs) [pos]) ]396 env <- ask 397 op2 "IO::say" errh $ VList [ VStr $ pretty (VError (errmsg strs) (collectPos (Just env))) ] 396 398 where 397 399 errmsg "" = VStr "Warning: something's wrong" 398 400 errmsg x = VStr x 401 collectPos Nothing = [] 402 collectPos (Just env) = (envPos env:collectPos (envCaller env)) 399 403 op1 "fail" = op1 "fail_" -- XXX - to be replaced by Prelude later 400 404 op1 "fail_" = \v -> do
