pass more tests
This commit is contained in:
@@ -332,7 +332,7 @@ unify :: Arrow -> Arrow -> Checker Arrow
|
|||||||
unify (f `Arrow` []) (f' `Arrow` t') =
|
unify (f `Arrow` []) (f' `Arrow` t') =
|
||||||
return $ (reverse f' ++ f) `Arrow` t'
|
return $ (reverse f' ++ f) `Arrow` t'
|
||||||
unify (f `Arrow` t) ([] `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') =
|
unify (f `Arrow` (Val v':t)) ((Val v:f') `Arrow` t') =
|
||||||
if v == v'
|
if v == v'
|
||||||
then unify (f `Arrow` t) (f' `Arrow` t')
|
then unify (f `Arrow` t) (f' `Arrow` t')
|
||||||
@@ -352,7 +352,7 @@ unify (f `Arrow` _) ((Any:_) `Arrow` t') =
|
|||||||
return $ f `Arrow` t'
|
return $ f `Arrow` t'
|
||||||
|
|
||||||
unify' :: Arrow -> Arrow -> Checker Arrow
|
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 :: [Instruction] -> Checker Arrow
|
||||||
getExpressionType instrs =
|
getExpressionType instrs =
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ compile file = do
|
|||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
files <- Directory.listDirectory "tests/samples"
|
files <- Directory.listDirectory "tests/samples"
|
||||||
-- let files = ["func.wast"]
|
-- let files = ["call.wast"]
|
||||||
-- compile "fact.wast"
|
-- compile "fact.wast"
|
||||||
syntaxTestCases <- (`mapM` files) $ \file -> do
|
syntaxTestCases <- (`mapM` files) $ \file -> do
|
||||||
content <- LBS.readFile $ "tests/samples/" ++ file
|
content <- LBS.readFile $ "tests/samples/" ++ file
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
(else (call $dummy) (call $dummy) (i32.const 9))
|
(else (call $dummy) (call $dummy) (i32.const 9))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(;
|
|
||||||
(func (export "nested") (param i32 i32) (result i32)
|
(func (export "nested") (param i32 i32) (result i32)
|
||||||
(if (result i32) (get_local 0)
|
(if (result i32) (get_local 0)
|
||||||
(then
|
(then
|
||||||
@@ -128,5 +128,4 @@
|
|||||||
)
|
)
|
||||||
(get_local 1)
|
(get_local 1)
|
||||||
)
|
)
|
||||||
;)
|
|
||||||
)
|
)
|
||||||
Reference in New Issue
Block a user