diff options
author | tomsmeding <tom.smeding@gmail.com> | 2019-11-26 13:46:29 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2019-11-26 13:46:29 +0100 |
commit | 5f86130930c19277fbf0ef3433cc43ab93aacf3f (patch) | |
tree | 22c11dc678a6262c44a34630076824f941193043 /VM.hs | |
parent | 9de16e245424e62318cdce4909e33c256f585cb6 (diff) |
declare defines for top-level mutual recursion
Diffstat (limited to 'VM.hs')
-rw-r--r-- | VM.hs | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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" |