fix tests }:3
build / build (push) Successful in 4m52s

This commit is contained in:
2026-07-18 02:49:34 -06:00
parent 9334373f96
commit a97a0ad7bb
14 changed files with 217 additions and 91 deletions
+17 -1
View File
@@ -39,6 +39,7 @@ import Debug.Pretty.Simple
import Control.Monad.Fix
import Language.Sexp.Located (Sexp)
import Data.Functor.Foldable (cata)
import qualified Gyehoek.Sexp
data Env = MkEnv
@@ -132,6 +133,19 @@ lower' g (ExpPrim p rs e) =
where
r = head rs
lower' g (ExpIf c t f) = do
t' <- lower' g t
f' <- lower' g f
let c' = lowerVal g c
pure [expr|
##{c'}
(call $gh-to-bool)
(if (then ##{t'})
(else ##{f'}))
|]
lower' g e = error . show $ e
-- lower' g (ExpIf c t f) = do
-- t' <- lower' g t
-- f' <- lower' g f
@@ -241,8 +255,10 @@ lowerBinOp op g x y r e = do
emitRuntime :: GenMod :> es => Eff es ()
emitRuntime = mfix \runtime -> do
Wasm.emit [wat|
Wasm.emit [wats|
(import "gyehoek" "write" (func $gh-write (param (ref eq))))
(import "gyehoek" "to-bool" (func $gh-to-bool (param (ref eq))
(result i32)))
|]
-- cont stack
Wasm.defineType [wat|
+8 -3
View File
@@ -31,6 +31,7 @@ module Gyehoek.Wasm
, emit
, renderModule
, wat
, wats
)
where
@@ -69,6 +70,7 @@ import Data.Data (Data)
import Data.Functor.Foldable (cata)
import Gyehoek.Sexp (sx)
import qualified Language.Sexp as SL
import Data.Foldable (traverse_)
newtype Module = MkModule { inner :: Vector Sexp }
@@ -137,12 +139,12 @@ defineType = send . DefineType
defineGlobal :: GenMod :> es => Sexp -> Eff es Idx
defineGlobal = send . DefineGlobal
emit :: GenMod :> es => Sexp -> Eff es ()
emit = send . Emit
emit :: GenMod :> es => List Sexp -> Eff es ()
emit = traverse_ (send . Emit)
appendAndIncrement
:: State GenModState :> es
=> LensLike' ((,) _) GenModState Natural
=> LensLike' ((,) Natural) GenModState Natural
-> Sexp
-> Eff es Idx
appendAndIncrement l s =
@@ -197,3 +199,6 @@ expr = Gyehoek.Sexp.makeSxs
wat :: QuasiQuoter
wat = Gyehoek.Sexp.makeSx [|| id ||]
wats :: QuasiQuoter
wats = Gyehoek.Sexp.makeSxs [|| id ||]