diff --git a/src/Language/Wasm/Validate.hs b/src/Language/Wasm/Validate.hs index 520ab0e..70515f1 100644 --- a/src/Language/Wasm/Validate.hs +++ b/src/Language/Wasm/Validate.hs @@ -332,7 +332,7 @@ unify :: Arrow -> Arrow -> Checker Arrow unify (f `Arrow` []) (f' `Arrow` t') = return $ (reverse f' ++ f) `Arrow` t' unify (f `Arrow` t) ([] `Arrow` t') = - return $ f `Arrow` (t' ++ t) + return $ f `Arrow` (reverse t ++ t') unify (f `Arrow` (Val v':t)) ((Val v:f') `Arrow` t') = if v == v' then unify (f `Arrow` t) (f' `Arrow` t') @@ -352,7 +352,7 @@ unify (f `Arrow` _) ((Any:_) `Arrow` t') = return $ f `Arrow` t' unify' :: Arrow -> Arrow -> Checker Arrow -unify' (f `Arrow` t) (f' `Arrow` t') = unify (reverse f `Arrow` reverse t) (reverse f' `Arrow` reverse t') +unify' (f `Arrow` t) (f' `Arrow` t') = unify (f `Arrow` reverse t) (reverse f' `Arrow` t') getExpressionType :: [Instruction] -> Checker Arrow getExpressionType instrs = diff --git a/tests/Test.hs b/tests/Test.hs index 24e2629..6a3eb4f 100644 --- a/tests/Test.hs +++ b/tests/Test.hs @@ -31,7 +31,7 @@ compile file = do main :: IO () main = do files <- Directory.listDirectory "tests/samples" - -- let files = ["func.wast"] + -- let files = ["call.wast"] -- compile "fact.wast" syntaxTestCases <- (`mapM` files) $ \file -> do content <- LBS.readFile $ "tests/samples/" ++ file diff --git a/tests/samples/if.wast b/tests/samples/if.wast index a609345..1459045 100644 --- a/tests/samples/if.wast +++ b/tests/samples/if.wast @@ -24,7 +24,7 @@ (else (call $dummy) (call $dummy) (i32.const 9)) ) ) -(; + (func (export "nested") (param i32 i32) (result i32) (if (result i32) (get_local 0) (then @@ -128,5 +128,4 @@ ) (get_local 1) ) - ;) ) \ No newline at end of file