diff --git a/src/Language/Wasm/Binary.hs b/src/Language/Wasm/Binary.hs index 50f3222..c17a863 100644 --- a/src/Language/Wasm/Binary.hs +++ b/src/Language/Wasm/Binary.hs @@ -105,7 +105,7 @@ getSection sectionType parser def = do where parseSection op | op == 0 = skipCustomSection >> getSection sectionType parser def - | op == fromEnum sectionType = (getULEB128 :: Get Natural) >> parser + | op == fromEnum sectionType = getWord8 >> (getULEB128 :: Get Natural) >> parser | op > fromEnum sectionType = return def | otherwise = fail $ "Incorrect order of sections. Expected " ++ show sectionType diff --git a/tests/Test.hs b/tests/Test.hs index 6fa25a8..2838950 100644 --- a/tests/Test.hs +++ b/tests/Test.hs @@ -29,8 +29,7 @@ compile file = do main :: IO () main = do - -- files <- Directory.listDirectory "tests/samples" - let files = ["fact.wast"] + files <- Directory.listDirectory "tests/samples" compile "fact.wast" syntaxTestCases <- (`mapM` files) $ \file -> do content <- LBS.readFile $ "tests/samples/" ++ file @@ -40,9 +39,7 @@ main = do binaryTestCases <- (`mapM` files) $ \file -> do content <- LBS.readFile $ "tests/samples/" ++ file let Right mod = Parser.parseModule <$> Lexer.scanner content - let res = Binary.decodeModuleLazy $ Binary.dumpModuleLazy mod - print res - let Right mod' = res + let Right mod' = Binary.decodeModuleLazy $ Binary.dumpModuleLazy mod return $ testCase ("Dump module to binary and parse back: " ++ file) $ assertBool "Module matched" $ mod == mod' defaultMain $ testGroup "tests" [