Added the -fwarn-unused-imports compiler option to warn about unused imports, and then set about pruning and ordering (mostly in my code) the import lists for all the modules
This commit is contained in:
parent
e2ab43af3f
commit
38c409d378
4
Main.hs
4
Main.hs
|
@ -19,7 +19,6 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- | Driver for the compiler.
|
||||
module Main (main) where
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
import List
|
||||
|
@ -33,10 +32,9 @@ import Errors
|
|||
import GenerateC
|
||||
import GenerateCPPCSP
|
||||
import ParseOccam
|
||||
import ParseRain
|
||||
import Pass
|
||||
import PreprocessOccam
|
||||
import PrettyShow
|
||||
import ParseRain
|
||||
import RainPasses
|
||||
import SimplifyExprs
|
||||
import SimplifyProcs
|
||||
|
|
1
Makefile
1
Makefile
|
@ -14,6 +14,7 @@ ghc_opts = \
|
|||
-fglasgow-exts \
|
||||
-fallow-undecidable-instances \
|
||||
-fwarn-unused-binds \
|
||||
-fwarn-unused-imports \
|
||||
-icommon -itransformations -ifrontends -ibackends \
|
||||
$(profile_opts)
|
||||
|
||||
|
|
13
TestMain.hs
13
TestMain.hs
|
@ -31,24 +31,25 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- * "UsageCheckTest"
|
||||
module TestMain () where
|
||||
|
||||
import Test.HUnit
|
||||
|
||||
import qualified BackendPassesTest (tests)
|
||||
import qualified CommonTest (tests)
|
||||
import qualified ParseRainTest (tests)
|
||||
import qualified PassTest (tests)
|
||||
import qualified RainPassesTest (tests)
|
||||
import qualified RainTypesTest (tests)
|
||||
import qualified UsageCheckTest (tests)
|
||||
import qualified PassTest (tests)
|
||||
import qualified CommonTest (tests)
|
||||
import qualified BackendPassesTest (tests)
|
||||
import Test.HUnit
|
||||
|
||||
main :: IO ()
|
||||
main = do runTestTT $ TestList
|
||||
[
|
||||
PassTest.tests
|
||||
BackendPassesTest.tests
|
||||
,CommonTest.tests
|
||||
,ParseRainTest.tests
|
||||
,PassTest.tests
|
||||
,RainPassesTest.tests
|
||||
,RainTypesTest.tests
|
||||
,UsageCheckTest.tests
|
||||
,BackendPassesTest.tests
|
||||
]
|
||||
return ()
|
||||
|
|
|
@ -31,12 +31,10 @@ import qualified Data.Map as Map
|
|||
import Data.Maybe
|
||||
import qualified Data.Set as Set
|
||||
import Numeric (readDec)
|
||||
import System
|
||||
import Text.Printf
|
||||
import Text.Regex
|
||||
|
||||
import CompState
|
||||
import Errors
|
||||
import Pass
|
||||
import PrettyShow
|
||||
|
||||
|
|
|
@ -24,20 +24,19 @@ import Data.Generics
|
|||
import Data.List
|
||||
import Data.Maybe
|
||||
import qualified Data.Set as Set
|
||||
import Control.Monad.Writer
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
import Numeric
|
||||
import Control.Monad.Writer
|
||||
import Text.Printf
|
||||
|
||||
import qualified AST as A
|
||||
import BackendPasses
|
||||
import CompState
|
||||
import Errors
|
||||
import EvalConstants
|
||||
import EvalLiterals
|
||||
import Metadata
|
||||
import Pass
|
||||
import Errors
|
||||
import ShowCode
|
||||
import TLP
|
||||
import Types
|
||||
|
|
|
@ -70,29 +70,23 @@ For channels of direction 'A.DirInput' or 'A.DirOutput' I actually pass the Chan
|
|||
-}
|
||||
module GenerateCPPCSP (generateCPPCSP) where
|
||||
|
||||
import Control.Monad.Writer
|
||||
import Data.Char
|
||||
import Data.Generics
|
||||
import Data.List
|
||||
import Data.Maybe
|
||||
import Data.Generics
|
||||
import Control.Monad.Writer
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
import Numeric
|
||||
import Text.Printf
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import EvalConstants
|
||||
import EvalLiterals
|
||||
import Errors
|
||||
import GenerateC
|
||||
import Metadata
|
||||
import Pass
|
||||
import Errors
|
||||
import ShowCode
|
||||
import TLP
|
||||
import Types
|
||||
import Utils
|
||||
|
||||
import GenerateC
|
||||
|
||||
--{{{ generator ops
|
||||
-- | Operations for the C++CSP backend.
|
||||
|
|
|
@ -19,7 +19,6 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- | Top-level process support.
|
||||
module TLP where
|
||||
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import Data.List
|
||||
|
@ -28,7 +27,6 @@ import Data.Maybe
|
|||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import Metadata
|
||||
import Types
|
||||
|
||||
data TLPChannel = TLPIn | TLPOut | TLPError
|
||||
|
|
|
@ -18,12 +18,13 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module CommonTest (tests) where
|
||||
|
||||
import Test.HUnit hiding (State)
|
||||
import qualified AST as A
|
||||
import Types
|
||||
import TreeUtil
|
||||
import Metadata
|
||||
import Data.Generics
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import qualified AST as A
|
||||
import Metadata
|
||||
import TreeUtil
|
||||
import Types
|
||||
|
||||
-- | Tests the isSafeConversion function:
|
||||
testIsSafeConversion :: Test
|
||||
|
|
|
@ -19,13 +19,13 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- | Compiler state.
|
||||
module CompState where
|
||||
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import Data.Map (Map)
|
||||
import qualified Data.Map as Map
|
||||
import Data.Set (Set)
|
||||
import qualified Data.Set as Set
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.State
|
||||
|
||||
import qualified AST as A
|
||||
import Errors
|
||||
|
|
|
@ -24,7 +24,6 @@ import Control.Monad.Trans
|
|||
import Data.List
|
||||
import System.IO.Error
|
||||
|
||||
import qualified AST as A
|
||||
import Metadata
|
||||
|
||||
type ErrorReport = (Maybe Meta, String)
|
||||
|
|
|
@ -20,15 +20,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
module EvalConstants (constantFold, isConstantName) where
|
||||
|
||||
import Control.Monad.Error
|
||||
import Control.Monad.Identity
|
||||
import Control.Monad.State
|
||||
import Data.Bits
|
||||
import Data.Char
|
||||
import Data.Generics
|
||||
import Data.Int
|
||||
import Data.Maybe
|
||||
import Data.Word
|
||||
import Numeric
|
||||
import Text.Printf
|
||||
|
||||
import qualified AST as A
|
||||
|
@ -36,7 +32,6 @@ import CompState
|
|||
import Errors
|
||||
import EvalLiterals
|
||||
import Metadata
|
||||
import Pass
|
||||
import ShowCode
|
||||
import Types
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ module EvalLiterals where
|
|||
import Control.Monad.Error
|
||||
import Control.Monad.Identity
|
||||
import Control.Monad.State
|
||||
import Data.Bits
|
||||
import Data.Char
|
||||
import Data.Generics
|
||||
import Data.Int
|
||||
|
|
|
@ -25,8 +25,6 @@ import Data.Generics
|
|||
import Text.Printf
|
||||
import Text.Read
|
||||
|
||||
import Utils
|
||||
|
||||
data Meta = Meta {
|
||||
metaFile :: Maybe String,
|
||||
metaLine :: Int,
|
||||
|
|
|
@ -26,6 +26,7 @@ import Data.Generics
|
|||
import Data.List
|
||||
import Text.PrettyPrint.HughesPJ
|
||||
import Text.Regex
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
|
||||
|
|
|
@ -38,21 +38,21 @@ If they are not equal, it shows them (using 'show') with the given message prefi
|
|||
|
||||
module TestUtil where
|
||||
|
||||
import qualified AST as A
|
||||
import Metadata (Meta,emptyMeta)
|
||||
import Monad
|
||||
import Test.HUnit hiding (State)
|
||||
import Data.Generics
|
||||
import Pattern
|
||||
import TreeUtil
|
||||
import Control.Monad.State
|
||||
import Control.Monad.Error
|
||||
import Pass
|
||||
import CompState
|
||||
import PrettyShow
|
||||
import Utils
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import Metadata (Meta,emptyMeta)
|
||||
import Pass
|
||||
import Pattern
|
||||
import PrettyShow
|
||||
import TreeUtil
|
||||
import Utils
|
||||
|
||||
-- | An abbreviation for using 'emptyMeta'. TODO: This should really be removed (and all uses of it replaced with 'emptyMeta') for clarity.
|
||||
m :: Meta
|
||||
|
|
|
@ -26,14 +26,15 @@ module TreeUtil (
|
|||
con0, con1, con2, con3, con4, con5, con6, con7
|
||||
) where
|
||||
|
||||
import Test.HUnit hiding (State)
|
||||
import qualified Data.Map as Map
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified PrettyShow as PS
|
||||
import Data.Maybe
|
||||
import Data.List
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import Pattern
|
||||
import qualified PrettyShow as PS
|
||||
|
||||
type MatchErrors = [String]
|
||||
|
||||
|
|
|
@ -32,7 +32,6 @@ module Types
|
|||
|
||||
) where
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{ {-
|
||||
{ {-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||
{-
|
||||
Tock: a compiler for parallel languages
|
||||
Copyright (C) 2007 University of Kent
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{ {-
|
||||
{ {-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||
{-
|
||||
Tock: a compiler for parallel languages
|
||||
Copyright (C) 2007 University of Kent
|
||||
|
||||
|
@ -21,9 +22,7 @@ module LexRain where
|
|||
|
||||
import Data.Generics
|
||||
|
||||
import Errors
|
||||
import Metadata
|
||||
import Pass
|
||||
}
|
||||
|
||||
%wrapper "posn"
|
||||
|
|
|
@ -20,12 +20,10 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
module ParseOccam (parseOccamProgram) where
|
||||
|
||||
import Control.Monad (liftM, when)
|
||||
import Control.Monad.Error (runErrorT)
|
||||
import Control.Monad.State (MonadState, StateT, execStateT, liftIO, modify, get, put)
|
||||
import Control.Monad.State (MonadState, modify, get, put)
|
||||
import Data.List
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
import Debug.Trace
|
||||
import Text.ParserCombinators.Parsec
|
||||
|
||||
import qualified AST as A
|
||||
|
|
|
@ -18,36 +18,21 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module ParseRain where
|
||||
|
||||
import qualified Text.ParserCombinators.Parsec.Token as P
|
||||
import qualified LexRain as L
|
||||
|
||||
|
||||
|
||||
|
||||
--Chuck a whole load from Parse:
|
||||
import Control.Monad (liftM, when)
|
||||
import Control.Monad.Error (runErrorT)
|
||||
import Control.Monad.State (MonadState, StateT, execStateT, liftIO, modify, get, put)
|
||||
import Control.Monad (liftM)
|
||||
import Control.Monad.State (MonadState, liftIO, get, put)
|
||||
import Data.List
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
import Debug.Trace
|
||||
import qualified IO
|
||||
import Numeric (readHex)
|
||||
import Text.ParserCombinators.Parsec
|
||||
import Text.Regex
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import EvalConstants
|
||||
import EvalLiterals
|
||||
import Intrinsics
|
||||
import qualified LexRain as L
|
||||
import Metadata
|
||||
import ParseUtils
|
||||
import Pass
|
||||
import Types
|
||||
import Utils
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -18,17 +18,18 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module ParseRainTest (tests) where
|
||||
|
||||
import qualified ParseRain as RP
|
||||
import qualified AST as A
|
||||
import qualified LexRain as L
|
||||
import Text.ParserCombinators.Parsec (runParser,eof)
|
||||
import Test.HUnit
|
||||
import Metadata (Meta,emptyMeta)
|
||||
import Prelude hiding (fail)
|
||||
import TestUtil
|
||||
import Pattern
|
||||
import TreeUtil
|
||||
import Test.HUnit
|
||||
import Text.ParserCombinators.Parsec (runParser,eof)
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import qualified LexRain as L
|
||||
import Metadata (Meta,emptyMeta)
|
||||
import qualified ParseRain as RP
|
||||
import Pattern
|
||||
import TestUtil
|
||||
import TreeUtil
|
||||
|
||||
data ParseTest a = Show a => ExpPass (String, RP.RainParser a , (a -> Assertion)) | ExpFail (String, RP.RainParser a)
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ module ParseUtils where
|
|||
|
||||
import Text.ParserCombinators.Parsec
|
||||
import Text.ParserCombinators.Parsec.Pos (newPos)
|
||||
|
||||
import Metadata
|
||||
|
||||
--{{{ Meta to/from SourcePos
|
||||
|
|
|
@ -19,19 +19,20 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- | A module containing all the misc Rain-specific passes that must be run on the parsed Rain AST before it can be fed into the shared passes.
|
||||
module RainPasses where
|
||||
|
||||
import qualified AST as A
|
||||
import Pass
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
import Control.Monad.State
|
||||
import Types
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import Metadata
|
||||
import Pass
|
||||
import Pattern
|
||||
import TreeUtil
|
||||
import RainTypes
|
||||
import TreeUtil
|
||||
import Types
|
||||
|
||||
-- | An ordered list of the Rain-specific passes to be run.
|
||||
rainPasses :: [(String,Pass)]
|
||||
|
|
|
@ -20,23 +20,20 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module RainPassesTest (tests) where
|
||||
|
||||
import Test.HUnit hiding (State)
|
||||
import Control.Monad.State as CSM
|
||||
import Control.Monad.State
|
||||
import Control.Monad.Identity
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import qualified AST as A
|
||||
import TestUtil
|
||||
import CompState
|
||||
import Errors
|
||||
import Pattern
|
||||
import TreeUtil
|
||||
import RainPasses
|
||||
import RainTypes
|
||||
import CompState
|
||||
import Control.Monad.Error (runErrorT)
|
||||
import Control.Monad.Identity
|
||||
import Types
|
||||
import Pass
|
||||
import Data.Generics
|
||||
import Utils
|
||||
import Errors
|
||||
import TestUtil
|
||||
import TreeUtil
|
||||
|
||||
skipP :: A.Structured
|
||||
skipP = A.OnlyP m (A.Skip m)
|
||||
|
|
|
@ -18,16 +18,17 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module RainTypes where
|
||||
|
||||
import qualified AST as A
|
||||
import Pass
|
||||
import Data.Generics
|
||||
import EvalConstants
|
||||
import Errors
|
||||
import Types
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import EvalConstants
|
||||
import Metadata
|
||||
import Pass
|
||||
import ShowCode
|
||||
import Types
|
||||
|
||||
|
||||
-- | A pass that records inferred types. Currently the only place where types are inferred is in seqeach\/pareach loops.
|
||||
|
|
|
@ -18,19 +18,20 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module RainTypesTest where
|
||||
|
||||
import Test.HUnit hiding (State)
|
||||
import TestUtil
|
||||
import RainTypes
|
||||
import TreeUtil
|
||||
import Pattern
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Control.Monad.State
|
||||
import Control.Monad.Error
|
||||
import Data.Generics
|
||||
import Types
|
||||
import Pass
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import Pass
|
||||
import Pattern
|
||||
import RainTypes
|
||||
import TestUtil
|
||||
import TreeUtil
|
||||
import Types
|
||||
|
||||
constantFoldTest :: Test
|
||||
constantFoldTest = TestList
|
||||
|
|
|
@ -19,8 +19,6 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
-- | Analyse syntactic structure of occam code.
|
||||
module StructureOccam (structureOccam) where
|
||||
|
||||
import Data.Generics
|
||||
|
||||
import Errors
|
||||
import LexOccam
|
||||
import Metadata
|
||||
|
|
|
@ -18,21 +18,17 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module PassTest (tests) where
|
||||
|
||||
import Test.HUnit hiding (State)
|
||||
import Control.Monad.State as CSM
|
||||
import qualified Data.Map as Map
|
||||
import qualified AST as A
|
||||
import TestUtil
|
||||
import Pattern
|
||||
import TreeUtil
|
||||
import CompState
|
||||
import Control.Monad.Error (runErrorT)
|
||||
import Control.Monad.Identity
|
||||
import Types
|
||||
import Pass
|
||||
import Data.Generics
|
||||
import Utils
|
||||
import qualified Data.Map as Map
|
||||
import Test.HUnit hiding (State)
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Pattern
|
||||
import SimplifyExprs
|
||||
import TestUtil
|
||||
import TreeUtil
|
||||
|
||||
valof0 :: A.Structured
|
||||
valof0 = A.OnlyEL m $ A.ExpressionList m [intLiteral 0]
|
||||
|
|
|
@ -22,14 +22,13 @@ module SimplifyExprs where
|
|||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import Metadata
|
||||
import Types
|
||||
import Pass
|
||||
import Types
|
||||
|
||||
simplifyExprs :: A.Process -> PassM A.Process
|
||||
simplifyExprs = runPasses passes
|
||||
|
|
|
@ -21,8 +21,6 @@ module SimplifyProcs (simplifyProcs) where
|
|||
|
||||
import Control.Monad.State
|
||||
import Data.Generics
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
|
|
|
@ -26,10 +26,10 @@ import Data.Maybe
|
|||
|
||||
import qualified AST as A
|
||||
import CompState
|
||||
import Errors
|
||||
import EvalConstants
|
||||
import Metadata
|
||||
import Pass
|
||||
import Errors
|
||||
import Types
|
||||
|
||||
unnest :: A.Process -> PassM A.Process
|
||||
|
|
|
@ -18,12 +18,12 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module UsageCheck where
|
||||
|
||||
import qualified AST as A
|
||||
import Data.Generics
|
||||
import Metadata
|
||||
import Data.List
|
||||
import Data.Maybe
|
||||
|
||||
import qualified AST as A
|
||||
|
||||
--An obvious thing to do would be to hold these lists (of written/read variables respectively) instead as sets
|
||||
--However, this would involve defining an ordering over A.Variable. This would be do-able for plain A.Variables,
|
||||
--but in order to define a proper ordering for subscripted variables, we would end up needing to provide an
|
||||
|
|
|
@ -18,14 +18,13 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
module UsageCheckTest (tests) where
|
||||
|
||||
import qualified UsageCheck as UC
|
||||
import qualified AST as A
|
||||
import Test.HUnit
|
||||
import Metadata (Meta,emptyMeta)
|
||||
import Prelude hiding (fail)
|
||||
import Test.HUnit
|
||||
|
||||
|
||||
import qualified AST as A
|
||||
import TestUtil
|
||||
import Data.List
|
||||
import Data.Ord
|
||||
import qualified UsageCheck as UC
|
||||
|
||||
|
||||
--See note in UsageCheck about WrittenRead not using sets. Therefore our equality function is inefficient
|
||||
|
|
Loading…
Reference in New Issue
Block a user