- buf <- case maybe_src_buf of
- Just b -> return b
- Nothing -> hGetStringBuffer src_filename
-
- let loc = mkSrcLoc (mkFastString src_filename) 1 0
-
- case unP parseModule (mkPState buf loc dflags) of {
-
- PFailed span err -> return (Left (mkPlainErrMsg span err));
-
- POk pst rdr_module -> do {
-
- let {ms = getMessages pst};
- printErrorsAndWarnings dflags ms; -- XXX
- when (errorsFound dflags ms) $ exitWith (ExitFailure 1);
-
- dumpIfSet_dyn dflags Opt_D_dump_parsed "Parser" (ppr rdr_module) ;
-
- dumpIfSet_dyn dflags Opt_D_source_stats "Source Statistics"
- (ppSourceStats False rdr_module) ;
-
- return (Right rdr_module)
- -- ToDo: free the string buffer later.
- }}
-
+ buf <- case maybe_src_buf of
+ Just b -> return b
+ Nothing -> hGetStringBuffer src_filename
+
+ let loc = mkSrcLoc (mkFastString src_filename) 1 0
+
+ case unP parseModule (mkPState buf loc dflags) of
+ PFailed span err ->
+ return ((emptyBag, unitBag (mkPlainErrMsg span err)), Nothing);
+
+ POk pst rdr_module -> do
+ let ms = getMessages pst
+ if errorsFound dflags ms then
+ return (ms, Nothing)
+ else do
+ dumpIfSet_dyn dflags Opt_D_dump_parsed "Parser" (ppr rdr_module) ;
+ dumpIfSet_dyn dflags Opt_D_source_stats "Source Statistics"
+ (ppSourceStats False rdr_module) ;
+ return (ms, Just rdr_module)
+ -- ToDo: free the string buffer later.