@@ -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)
5152import qualified Data.List as List
5253import qualified Data.Maybe as Maybe
5354import 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 )
5556import Numeric.Natural
5657import Data.Word (Word32 , Word64 )
5758import Data.Int (Int32 , Int64 )
@@ -709,17 +710,17 @@ while pred body = do
709710label :: GenFun (Label t )
710711label = 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