Support for -fwarn-unused-do-bind and -fwarn-wrong-do-bind, as per #3263
authorMax Bolingbroke <batterseapower@hotmail.com>
Wed, 1 Jul 2009 20:04:14 +0000 (20:04 +0000)
committerMax Bolingbroke <batterseapower@hotmail.com>
Wed, 1 Jul 2009 20:04:14 +0000 (20:04 +0000)
Main.hs

diff --git a/Main.hs b/Main.hs
index f423dba..89f97a7 100644 (file)
--- a/Main.hs
+++ b/Main.hs
@@ -267,14 +267,17 @@ satisfy p =
         c:cs | p c -> Success (updatePos pos c) [c] cs c
         _          -> Failure pos "Bad character"
 
+satisfy_ :: (Char -> Bool) -> Parser ()
+satisfy_ p = satisfy p >> return ()
+
 char_ :: Char -> Parser ()
 char_ c = do
-    satisfy (== c) `message` (show c++" expected")
+    satisfy_ (== c) `message` (show c++" expected")
     return ()
 
 anyChar_ :: Parser ()
 anyChar_ = do
-    satisfy (const True) `message` "Unexpected end of file"
+    satisfy_ (const True) `message` "Unexpected end of file"
     return ()
 
 any2Chars_ :: Parser ()
@@ -370,10 +373,10 @@ linePragma :: Parser ()
 linePragma = do
     char_ '#'
     manySatisfy_ isSpace
-    satisfy (\c -> c == 'L' || c == 'l')
-    satisfy (\c -> c == 'I' || c == 'i')
-    satisfy (\c -> c == 'N' || c == 'n')
-    satisfy (\c -> c == 'E' || c == 'e')
+    satisfy_ (\c -> c == 'L' || c == 'l')
+    satisfy_ (\c -> c == 'I' || c == 'i')
+    satisfy_ (\c -> c == 'N' || c == 'n')
+    satisfy_ (\c -> c == 'E' || c == 'e')
     manySatisfy1_ isSpace
     line <- liftM read $ manySatisfy1 isDigit
     manySatisfy1_ isSpace
@@ -415,15 +418,14 @@ satisfyC p = do
         '\\':'\n':_ -> do any2Chars_ `fakeOutput` []; satisfyC p
         _           -> satisfy p
 
+satisfyC_ :: (Char -> Bool) -> Parser ()
+satisfyC_ p = satisfyC p >> return ()
+
 charC_ :: Char -> Parser ()
-charC_ c = do
-    satisfyC (== c) `message` (show c++" expected")
-    return ()
+charC_ c = satisfyC_ (== c) `message` (show c++" expected")
 
 anyCharC_ :: Parser ()
-anyCharC_ = do
-    satisfyC (const True) `message` "Unexpected end of file"
-    return ()
+anyCharC_ = satisfyC_ (const True) `message` "Unexpected end of file"
 
 any2CharsC_ :: Parser ()
 any2CharsC_ = anyCharC_ >> anyCharC_