diff --git a/js/expression.ml b/js/expression.ml index ef176a01..a91c3b17 100644 --- a/js/expression.ml +++ b/js/expression.ml @@ -179,8 +179,7 @@ let tuple_extract wasm_mod tuple index = let pop wasm_mod typ = meth_call global##.binaryen "_BinaryenPop" [| inject wasm_mod; inject typ |] -(* TODO: Figure this out *) -let null () = Obj.magic () +let null () = pure_js_expr "null" let print expr = let text = meth_call global##.binaryen "emitText" [| inject expr |] in diff --git a/test/test.expected b/test/test.expected index 6c5b3f56..081672a0 100644 --- a/test/test.expected +++ b/test/test.expected @@ -5,6 +5,10 @@ (export "memory" (memory $0)) (func $adder (param $0 i32) (param $1 i32) (result i32) (block $add (result i32) + (if + (i32.const 0) + (unreachable) + ) (i32.add (select (local.get $0) diff --git a/test/test.ml b/test/test.ml index 1d5a9145..765b8313 100644 --- a/test/test.ml +++ b/test/test.ml @@ -20,7 +20,10 @@ let select = let bin = Expression.binary wasm_mod Op.add_int32 select (y ()) -let add = Expression.block wasm_mod ~return_type:Type.int32 "add" [ bin ] +let add = Expression.block wasm_mod ~return_type:Type.int32 "add" [ + Expression.if_ wasm_mod (Expression.const wasm_mod (Literal.int32 0l)) (Expression.unreachable wasm_mod) (Expression.null ()); + bin +] (* Create the add function *) let adder = Function.add_function wasm_mod "adder" params results [||] add