fix section parsing
This commit is contained in:
@@ -105,7 +105,7 @@ getSection sectionType parser def = do
|
|||||||
where
|
where
|
||||||
parseSection op
|
parseSection op
|
||||||
| op == 0 = skipCustomSection >> getSection sectionType parser def
|
| 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
|
| op > fromEnum sectionType = return def
|
||||||
| otherwise =
|
| otherwise =
|
||||||
fail $ "Incorrect order of sections. Expected " ++ show sectionType
|
fail $ "Incorrect order of sections. Expected " ++ show sectionType
|
||||||
|
|||||||
+2
-5
@@ -29,8 +29,7 @@ compile file = do
|
|||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
-- files <- Directory.listDirectory "tests/samples"
|
files <- Directory.listDirectory "tests/samples"
|
||||||
let files = ["fact.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
|
||||||
@@ -40,9 +39,7 @@ main = do
|
|||||||
binaryTestCases <- (`mapM` files) $ \file -> do
|
binaryTestCases <- (`mapM` files) $ \file -> do
|
||||||
content <- LBS.readFile $ "tests/samples/" ++ file
|
content <- LBS.readFile $ "tests/samples/" ++ file
|
||||||
let Right mod = Parser.parseModule <$> Lexer.scanner content
|
let Right mod = Parser.parseModule <$> Lexer.scanner content
|
||||||
let res = Binary.decodeModuleLazy $ Binary.dumpModuleLazy mod
|
let Right mod' = Binary.decodeModuleLazy $ Binary.dumpModuleLazy mod
|
||||||
print res
|
|
||||||
let Right mod' = res
|
|
||||||
return $ testCase ("Dump module to binary and parse back: " ++ file) $
|
return $ testCase ("Dump module to binary and parse back: " ++ file) $
|
||||||
assertBool "Module matched" $ mod == mod'
|
assertBool "Module matched" $ mod == mod'
|
||||||
defaultMain $ testGroup "tests" [
|
defaultMain $ testGroup "tests" [
|
||||||
|
|||||||
Reference in New Issue
Block a user