Skip to content

Commit 6fa5bb2

Browse files
committed
add if'
1 parent 4188472 commit 6fa5bb2

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/Language/Wasm/Builder.hs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ module Language.Wasm.Builder (
4141
memorySize, growMemory,
4242
nop, Language.Wasm.Builder.drop, select,
4343
call, callIndirect, finish, br, brIf, brTable,
44-
{-if', loop, block, when, for, while,-}
44+
if',
45+
{-, loop, block, when, for, while,-}
4546
trap, unreachable,
4647
appendExpr, after,
4748
Producer, OutType, produce, Consumer, (.=)
@@ -51,7 +52,7 @@ import Prelude hiding (and, or)
5152
import qualified Data.List as List
5253
import qualified Data.Maybe as Maybe
5354
import Control.Monad.State (State, execState, get, gets, put, modify)
54-
import Control.Monad.Reader (ReaderT, ask, runReaderT)
55+
import Control.Monad.Reader (ReaderT, ask, asks, runReaderT)
5556
import Numeric.Natural
5657
import Data.Word (Word32, Word64)
5758
import Data.Int (Int32, Int64)
@@ -709,17 +710,17 @@ while pred body = do
709710
label :: GenFun (Label t)
710711
label = Label <$> ask
711712

712-
-- if' :: (Producer pred, OutType pred ~ Proxy I32, Returnable res)
713-
-- => res
714-
-- -> pred
715-
-- -> GenFun res
716-
-- -> GenFun res
717-
-- -> GenFun res
718-
-- if' res pred true false = do
719-
-- produce pred
720-
-- deep <- (+1) <$> ask
721-
-- appendExpr [If (asResultValue res) (genExpr deep $ true) (genExpr deep $ false)]
722-
-- return returnableValue
713+
if' :: (Producer pred, OutType pred ~ Proxy I32, Returnable res)
714+
=> BlockType
715+
-> pred
716+
-> GenFun res
717+
-> GenFun res
718+
-> GenFun res
719+
if' blockType pred true false = do
720+
produce pred
721+
deep <- asks (+1)
722+
appendExpr [If blockType (genExpr deep true) (genExpr deep false)]
723+
return returnableValue
723724

724725
-- loop :: (Returnable res) => res -> GenFun res -> GenFun res
725726
-- loop res body = do

0 commit comments

Comments
 (0)