Add a runParser function; part of the patch from Brian Bloniarz
authorIan Lynagh <igloo@earth.li>
Wed, 23 Mar 2011 17:42:55 +0000 (17:42 +0000)
committerIan Lynagh <igloo@earth.li>
Wed, 23 Mar 2011 17:42:55 +0000 (17:42 +0000)
HSCParser.hs
Main.hs

index 8c1cd6c..21c1c8a 100644 (file)
@@ -8,6 +8,9 @@ import Data.Char                ( isAlpha, isAlphaNum, isSpace, isDigit )
 
 newtype Parser a = Parser (SourcePos -> String -> ParseResult a)
 
+runParser :: Parser a -> String -> String -> ParseResult a
+runParser (Parser p) file_name = p (SourcePos file_name 1)
+
 data ParseResult a = Success !SourcePos String String a
                    | Failure !SourcePos String
 
diff --git a/Main.hs b/Main.hs
index 65df85e..b3db66a 100644 (file)
--- a/Main.hs
+++ b/Main.hs
@@ -178,11 +178,10 @@ processFile flags mb_libdir name
        -- which gcc doesn't like, so strip out any ^M characters.
        s <- hGetContents h
        let s' = filter ('\r' /=) s
-       case parser of
-          Parser p -> case p (SourcePos file_name 1) s' of
-              Success _ _ _ toks -> output mb_libdir flags file_name toks
-              Failure (SourcePos name' line) msg ->
-                  die (name'++":"++show line++": "++msg++"\n")
+       case runParser parser file_name s' of
+         Success _ _ _ toks -> output mb_libdir flags file_name toks
+         Failure (SourcePos name' line) msg ->
+           die (name'++":"++show line++": "++msg++"\n")
 
 getLibDir :: IO (Maybe String)
 #if defined(NEW_GHC_LAYOUT)