#include "HsVersions.h"
import Parser ( parseHeader )
-import Lexer ( P(..), ParseResult(..), mkPState, pragState
- , lexer, Token(..), PState(..) )
+import Lexer
import FastString
import HsSyn ( ImportDecl(..), HsModule(..) )
import Module ( ModuleName, moduleName )
import PrelNames ( gHC_PRIM, mAIN_NAME )
import StringBuffer ( StringBuffer(..), hGetStringBuffer, hGetStringBufferBlock
, appendStringBuffers )
+import Config
import SrcLoc
-import FastString ( mkFastString )
-import DynFlags ( DynFlags )
+import DynFlags
import ErrUtils
import Util
import Outputable
import Bag ( emptyBag, listToBag )
import Distribution.Compiler
+import Distribution.Version
import Control.Exception
+import Control.Monad
+import System.Exit
import System.IO
import Data.List
let loc = mkSrcLoc (mkFastString filename) 1 0
case unP parseHeader (mkPState buf loc dflags) of
PFailed span err -> parseError span err
- POk _ rdr_module ->
+ POk pst rdr_module -> do
+ let ms = getMessages pst
+ printErrorsAndWarnings dflags ms
+ when (errorsFound dflags ms) $ exitWith (ExitFailure 1)
case rdr_module of
L _ (HsModule mb_mod _ imps _ _ _ _ _) ->
let
checkExtension :: Located FastString -> Located String
checkExtension (L l ext)
- = case reads (unpackFS ext) of
- [] -> languagePragParseError l
- (okExt,""):_ -> case extensionsToGHCFlag [okExt] of
- ([],[opt]) -> L l opt
- _ -> unsupportedExtnError l okExt
+ = case reads (unpackFS ext) of
+ [] -> languagePragParseError l
+ (okExt,""):_ ->
+ case readVersion cProjectVersion of
+ Just version ->
+ case extensionsToGHCFlag version [okExt] of
+ ([],[opt]) -> L l opt
+ _ -> unsupportedExtnError l okExt
+ Nothing ->
+ panic ("Can't parse version: " ++ show cProjectVersion)
languagePragParseError loc =
pgmError (showSDoc (mkLocMessage loc (