diff --git a/common/Errors.hs b/common/Errors.hs index 3a0e735..008fafb 100644 --- a/common/Errors.hs +++ b/common/Errors.hs @@ -23,6 +23,7 @@ module Errors (checkJust, Die(..), import Control.Monad.Error import Control.Monad.Trans +import Data.Generics import Data.List import System.IO import System.IO.Error @@ -49,7 +50,7 @@ data WarningType | WarnUnknownPreprocessorDirective | WarnUninitialisedVariable | WarnUnusedVariable - deriving (Eq, Show, Ord, Read, Enum, Bounded) + deriving (Eq, Show, Ord, Read, Enum, Bounded, Typeable, Data) -- I intend the above warnings to be part of a command-line mechanism to enable -- or suppress them according to various flags. So that you might write: -- -WnoWarnParserOddity diff --git a/data/CompState.hs b/data/CompState.hs index 243002e..3257e89 100644 --- a/data/CompState.hs +++ b/data/CompState.hs @@ -31,7 +31,7 @@ import Data.Set (Set) import qualified Data.Set as Set import qualified AST as A -import Errors (Die, dieP, ErrorReport, Warn, WarningType, warnP) +import Errors (Die, dieP, ErrorReport, Warn, WarningType(..), warnP) import Metadata import OrdAST () import UnifyType @@ -101,6 +101,7 @@ data CompState = CompState { csVerboseLevel :: Int, csOutputFile :: String, csKeepTemporaries :: Bool, + csEnabledWarnings :: Set WarningType, -- Set by preprocessor csCurrentFile :: String, @@ -138,6 +139,12 @@ emptyState = CompState { csVerboseLevel = 0, csOutputFile = "-", csKeepTemporaries = False, + csEnabledWarnings = Set.fromList + [ WarnInternal + , WarnParserOddity + , WarnUnknownPreprocessorDirective + , WarnUnusedVariable], +-- TODO enable WarnUninitialisedVariable by default csCurrentFile = "none", csUsedFiles = Set.empty,