diff --git a/golden/apply-twice/exec b/golden/apply-twice/exec new file mode 100644 index 0000000..c5b6df6 --- /dev/null +++ b/golden/apply-twice/exec @@ -0,0 +1,2 @@ +ret > ExitSuccess +out > 17 diff --git a/golden/apply2/exec b/golden/apply2/exec new file mode 100644 index 0000000..266b9e7 --- /dev/null +++ b/golden/apply2/exec @@ -0,0 +1,2 @@ +ret > ExitSuccess +out > 10 diff --git a/golden/callcc-discard/exec b/golden/callcc-discard/exec new file mode 100644 index 0000000..0ff06a0 --- /dev/null +++ b/golden/callcc-discard/exec @@ -0,0 +1,2 @@ +ret > ExitSuccess +out > 1234 diff --git a/golden/callcc-discard/source.scm b/golden/callcc-discard/source.scm index a7e9d9f..6dcb2f3 100644 --- a/golden/callcc-discard/source.scm +++ b/golden/callcc-discard/source.scm @@ -1 +1 @@ -(call/cc (_) 1234) +(call/cc (λ (_) 1234)) diff --git a/src/Gyehoek/CPS/Convert.hs b/src/Gyehoek/CPS/Convert.hs index 6572749..52f9e60 100644 --- a/src/Gyehoek/CPS/Convert.hs +++ b/src/Gyehoek/CPS/Convert.hs @@ -45,7 +45,6 @@ convert (Scm.ExpLit l) k = k $ ValLit l -- special case: call/cc is desugared during cps-conversion... convert (Scm.ExpPrim (PrimCallCC withcc)) k = do convert withcc \withcc' -> do - callcc <- gensym' @Name "call/cc" cc <- gensym' @Name "cc" r <- gensym' "r" m <- k $ ValVar r diff --git a/test/Gyehoek/Test/Golden.hs b/test/Gyehoek/Test/Golden.hs index b8fa33b..dfd5a71 100644 --- a/test/Gyehoek/Test/Golden.hs +++ b/test/Gyehoek/Test/Golden.hs @@ -10,7 +10,7 @@ import System.Directory import Data.Function import System.Environment.Blank (getEnvDefault) import qualified System.Process.Text as PT -import Control.Exception (catches, ErrorCall(..), Handler(..), catch, SomeException (SomeException), Exception (displayException)) +import Control.Exception (catch, Exception (displayException)) import Gyehoek.Stack.VM (writeObj) import Data.Text qualified as T import System.Exit (ExitCode(..)) @@ -25,10 +25,9 @@ brokenWasmTests = brokenStackifyTests :: List String brokenStackifyTests = - [ "apply-twice" - , "adder" - , "apply2" + [ "adder" , "let-fn" + , "callcc-nested1" -- requires closure-conversion ] root :: IO TestTree @@ -67,12 +66,6 @@ stackifyTests files = do let testname = takeFileName test scmfile = test "source.scm" resultfile = test "exec" - -- action = Driver.eval_e2e' scmfile >>= \case - -- Right rs -> - -- pure ( ExitSuccess - -- , T.unwords . fmap writeObj $ rs - -- , "" ) - -- Left e -> pure (ExitFailure 1, "", T.pack $ displayException e) action = catch @SomeException (do rs <- Driver.eval_e2e scmfile