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