summaryrefslogtreecommitdiff
path: root/VM.hs
diff options
context:
space:
mode:
Diffstat (limited to 'VM.hs')
-rw-r--r--VM.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/VM.hs b/VM.hs
index 5f7a818..bed0596 100644
--- a/VM.hs
+++ b/VM.hs
@@ -3,7 +3,6 @@ module VM(vmRun) where
import Control.Monad
import Data.Char
import Data.List
-import Data.Maybe
import qualified Data.Map.Strict as Map
import Data.Map.Strict ((!))
import System.IO
@@ -88,7 +87,9 @@ vmRunTerm info@(Info bbmap _ _) state@(State { sTempMap = tmap }) term = case te
findRef :: TempMap -> Ref -> RunValue
findRef _ (RConst n) = RVNum n
-findRef tmap (RTemp i) = fromJust (Map.lookup i tmap)
+findRef tmap (RTemp i) = case Map.lookup i tmap of
+ Nothing -> error "Use of declared but uninitialised variable"
+ Just v -> v
findRef _ (RSClo name) = RVClosure name []
findRef _ RNone = error "VM: None ref used"