Changeset 2409 for src/Main.hs

Show
Ignore:
Timestamp:
04/27/05 21:13:27 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
3914
Message:

* repair interactive shell.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Main.hs

    r2396 r2409  
    163163doRunSingle :: IORef Env -> RunOptions -> String -> IO () 
    164164doRunSingle menv opts prog = (`catch` handler) $ do 
    165     exp <- parse >>= makeProper 
    166     env <- theEnv 
    167     result <- runImperatively env (evaluate exp) 
     165    exp     <- makeProper =<< parse 
     166    env     <- theEnv 
     167    rv      <- runImperatively env (evaluate exp) 
     168    result  <- case rv of 
     169        VControl (ControlEnv env') -> do 
     170            glob    <- readIORef $ envGlobal env' 
     171            ref     <- findSymRef "$*_" glob 
     172            val     <- runEval env' $ readRef ref 
     173            writeIORef menv env' 
     174            return val 
     175        _ -> return rv 
    168176    printer env result 
    169177    where 
    170178    parse = do 
    171         parseEnv <- emptyEnv [] 
    172         runRule parseEnv (return . envBody) ruleProgram "<interactive>" (decodeUTF8 prog) 
     179        env <- readIORef menv 
     180        runRule env (return . envBody) ruleProgram "<interactive>" (decodeUTF8 prog) 
    173181    theEnv = do 
    174182        ref <- if runOptSeparately opts 
     
    188196        Val err@(VError _ _) -> fail $ pretty err 
    189197        Stmts stmts@((_,pos):_) | not (runOptSeparately opts) -> do 
    190             let withDump = stmts ++ [(Syn "dump" [], pos)] 
     198            let withDump = stmts ++ [(Syn "env" [], pos)] 
    191199            return $ Stmts withDump 
    192200        _ | not (runOptSeparately opts) -> do 
    193201            let pos = SourcePos "<interactive>" 0 0 
    194             return $ Stmts [(exp, pos), (Syn "dump" [], pos)] 
     202            return $ Stmts [(exp, pos), (Syn "env" [], pos)] 
    195203        _ -> return exp 
    196204    handler err = if not (isUserError err) then ioError err else do