lookAhead: reset error messages on success
authorMarios Titas <redneb@gmx.com>
Wed, 10 Sep 2014 13:23:34 +0000 (14:23 +0100)
committerAntoine Latter <aslatter@gmail.com>
Thu, 25 Sep 2014 01:33:15 +0000 (20:33 -0500)
Text/Parsec/Prim.hs

index c5c161a..00acbbc 100644 (file)
@@ -472,14 +472,10 @@ try p =
 -- if this is undesirable.
 
 lookAhead :: (Stream s m t) => ParsecT s u m a -> ParsecT s u m a
-lookAhead p         = do{ state <- getParserState
-                        ; x <- p'
-                        ; setParserState state
-                        ; return x
-                        }
-    where
-    p' = ParsecT $ \s cok cerr eok eerr ->
-         unParser p s eok cerr eok eerr
+lookAhead p =
+    ParsecT $ \s _ cerr eok eerr -> do
+        let eok' a _ _ = eok a s (newErrorUnknown (statePos s))
+        unParser p s eok' cerr eok' eerr
 
 -- | The parser @token showTok posFromTok testTok@ accepts a token @t@
 -- with result @x@ when the function @testTok t@ returns @'Just' x@. The