FIX #2500: Don't log warnings in getHeader
[ghc-hetmet.git] / compiler / main / HeaderInfo.hs
index 89f4661..8f5d020 100644 (file)
@@ -59,8 +59,10 @@ getImports dflags buf filename source_filename = do
   case unP parseHeader (mkPState buf loc dflags) of
     PFailed span err -> parseError span err
     POk pst rdr_module -> do
-      let ms@(warns, errs) = getMessages pst
-      logWarnings warns
+      let ms@(_warns, errs) = getMessages pst
+      -- don't log warnings: they'll be reported when we parse the file
+      -- for real.  See #2500.
+      -- logWarnings warns
       if errorsFound dflags ms
         then liftIO $ throwIO $ mkSrcErr errs
         else
@@ -123,8 +125,9 @@ lazyGetToks dflags filename handle = do
                   _other    -> do rest <- lazyLexBuf handle state' eof
                                   return (t : rest)
       _ | not eof   -> getMore handle state
-        | otherwise -> return []
-  
+        | otherwise -> return [L (last_loc state) ITeof]
+                         -- parser assumes an ITeof sentinel at the end
+
   getMore :: Handle -> PState -> IO [Located Token]
   getMore handle state = do
      -- pprTrace "getMore" (text (show (buffer state))) (return ())