From 56ea29a659b9f4b1d51ef8bc034135081c1811ac Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Fri, 19 Jan 2018 14:51:36 -0800 Subject: [PATCH] check lexer state invariants on EOF --- src/Language/Wasm/Lexer.x | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Language/Wasm/Lexer.x b/src/Language/Wasm/Lexer.x index ad5193c..6ecfd5e 100644 --- a/src/Language/Wasm/Lexer.x +++ b/src/Language/Wasm/Lexer.x @@ -9,6 +9,7 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.Char as Char import qualified Data.ByteString.Lazy.UTF8 as LBSUtf8 import Control.Applicative ((<$>)) +import Control.Monad (when) } @@ -350,6 +351,11 @@ scanner str = runAlex str loop loop = do lex <- alexMonadScan case lex of - Lexeme _ EOF -> return [lex] + Lexeme _ EOF -> do + strFlag <- getLexerStringFlag + when strFlag $ alexError "End of file reached before string literal end" + commentDepth <- getLexerCommentDepth + when (commentDepth > 0) $ alexError "End of file reached before block comment end" + return [lex] otherwise -> (lex :) <$> loop } \ No newline at end of file