on master help sign in
Add -W flag to many files, mostly getting rid of dead imports
c966776Evan Czaplicki
compiler/Build/Dependencies.hs+1−10
@@ -1,12 +1,11 @@
1+{-# OPTIONS_GHC -W #-}
1module Build.Dependencies (getSortedDependencies) where
2module Build.Dependencies (getSortedDependencies) where
2
3
3−import Data.Data
4import Control.Applicative
4import Control.Applicative
5import Control.Monad.Error
5import Control.Monad.Error
6import qualified Control.Monad.State as State
6import qualified Control.Monad.State as State
7import qualified Data.Aeson as Json
7import qualified Data.Aeson as Json
8import qualified Data.ByteString.Lazy.Char8 as BSC
8import qualified Data.ByteString.Lazy.Char8 as BSC
9−import qualified Data.Char as Char
10import qualified Data.Graph as Graph
9import qualified Data.Graph as Graph
11import qualified Data.List as List
10import qualified Data.List as List
12import qualified Data.Map as Map
11import qualified Data.Map as Map
@@ -16,19 +15,11 @@ import System.Directory
16import System.Exit
15import System.Exit
17import System.FilePath as FP
16import System.FilePath as FP
18import System.IO
17import System.IO
19−import Text.PrettyPrint (Doc)
20
18
21import qualified SourceSyntax.Module as Module
19import qualified SourceSyntax.Module as Module
22−import qualified SourceSyntax.Type as Type
23import qualified Parse.Parse as Parse
20import qualified Parse.Parse as Parse
24−import qualified Transform.Check as Check
25−import qualified Transform.SortDefinitions as SD
26−import qualified Type.Inference as TI
27−import qualified Type.Constrain.Declaration as TcDecl
28−import qualified Transform.Canonicalize as Canonical
29import qualified Elm.Internal.Paths as Path
21import qualified Elm.Internal.Paths as Path
30import qualified Elm.Internal.Name as N
22import qualified Elm.Internal.Name as N
31−import qualified Elm.Internal.Version as V
32import qualified Elm.Internal.Dependencies as Deps
23import qualified Elm.Internal.Dependencies as Deps
33
24
34getSortedDependencies :: [FilePath] -> Module.Interfaces -> FilePath -> IO [String]
25getSortedDependencies :: [FilePath] -> Module.Interfaces -> FilePath -> IO [String]
compiler/Build/File.hs+1−1
@@ -1,8 +1,8 @@
1+{-# OPTIONS_GHC -W #-}
1module Build.File (build) where
2module Build.File (build) where
2
3
3import Control.Monad (when)
4import Control.Monad (when)
4import qualified Data.Binary as Binary
5import qualified Data.Binary as Binary
5−import qualified Data.List as List
6import qualified Data.Map as Map
6import qualified Data.Map as Map
7import System.Directory
7import System.Directory
8import System.Exit
8import System.Exit
compiler/Build/Source.hs+1−6
@@ -1,13 +1,8 @@
1+{-# OPTIONS_GHC -W #-}
1module Build.Source (build) where
2module Build.Source (build) where
2
3
3−import Data.Data
4−import Control.Monad.State
5−import qualified Data.Graph as Graph
6−import qualified Data.List as List
7import qualified Data.Map as Map
4import qualified Data.Map as Map
8import qualified Data.Set as Set
5import qualified Data.Set as Set
9−import System.Directory
10−import System.Exit
11import System.FilePath as FP
6import System.FilePath as FP
12import Text.PrettyPrint (Doc)
7import Text.PrettyPrint (Doc)
13
8
compiler/Compiler.hs+2−2
@@ -1,7 +1,7 @@
1+{-# OPTIONS_GHC -W #-}
1module Main where
2module Main where
2
3
3import Control.Monad (foldM)
4import Control.Monad (foldM)
4−import qualified Data.Map as Map
5import qualified Data.Maybe as Maybe
5import qualified Data.Maybe as Maybe
6import Text.Blaze.Html.Renderer.String (renderHtml)
6import Text.Blaze.Html.Renderer.String (renderHtml)
7import qualified Data.ByteString.Lazy.Char8 as BS
7import qualified Data.ByteString.Lazy.Char8 as BS
@@ -37,7 +37,7 @@ build flags rootFile =
37 then getSortedDependencies (Flag.src_dir flags) builtIns rootFile
37 then getSortedDependencies (Flag.src_dir flags) builtIns rootFile
38 else return [rootFile]
38 else return [rootFile]
39
39
40− (moduleName, interfaces) <-
40+ (moduleName, _) <-
41 File.build flags (length files) builtIns "" files
41 File.build flags (length files) builtIns "" files
42
42
43 js <- foldM appendToOutput BS.empty files
43 js <- foldM appendToOutput BS.empty files
compiler/Generate/Cases.hs+6−6
@@ -1,9 +1,9 @@
1module Generate.Cases (toMatch, Match (..), Clause (..), matchSubst, newVar) where
1module Generate.Cases (toMatch, Match (..), Clause (..), matchSubst, newVar) where
2
2
3−import Control.Applicative ((<$>),(<*>))
3+import Control.Applicative ((<$>))
4−import Control.Arrow (first,second)
4+import Control.Arrow (first)
5import Control.Monad.State
5import Control.Monad.State
6−import Data.List (groupBy,sortBy,lookup)
6+import Data.List (groupBy,sortBy)
7import Data.Maybe (fromMaybe)
7import Data.Maybe (fromMaybe)
8
8
9import SourceSyntax.Location
9import SourceSyntax.Location
@@ -47,7 +47,7 @@ matchSubst pairs (Match n cs m) =
47 clauseSubst (Clause c vs m) =
47 clauseSubst (Clause c vs m) =
48 Clause c (map varSubst vs) (matchSubst pairs m)
48 Clause c (map varSubst vs) (matchSubst pairs m)
49
49
50−isCon (p:ps, e) =
50+isCon (p:_, _) =
51 case p of
51 case p of
52 PData _ _ -> True
52 PData _ _ -> True
53 PLiteral _ -> True
53 PLiteral _ -> True
@@ -75,7 +75,7 @@ dealias v c@(p:ps, L s e) =
75matchVar :: [String] -> [([Pattern],LExpr)] -> Match -> State Int Match
75matchVar :: [String] -> [([Pattern],LExpr)] -> Match -> State Int Match
76matchVar (v:vs) cs def = match vs (map subVar cs) def
76matchVar (v:vs) cs def = match vs (map subVar cs) def
77 where
77 where
78− subVar (p:ps, ce@(L s e)) = (ps, L s $ subOnePattern p e)
78+ subVar (p:ps, (L s e)) = (ps, L s $ subOnePattern p e)
79 where
79 where
80 subOnePattern pattern e =
80 subOnePattern pattern e =
81 case pattern of
81 case pattern of
@@ -109,7 +109,7 @@ matchClause :: Either String Literal
109 -> [([Pattern],LExpr)]
109 -> [([Pattern],LExpr)]
110 -> Match
110 -> Match
111 -> State Int Clause
111 -> State Int Clause
112−matchClause c (v:vs) cs def =
112+matchClause c (_:vs) cs def =
113 do vs' <- getVars
113 do vs' <- getVars
114 Clause c vs' <$> match (vs' ++ vs) (map flatten cs) def
114 Clause c vs' <$> match (vs' ++ vs) (map flatten cs) def
115 where
115 where
compiler/InterfaceSerialization.hs+1−2
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -W #-}
1module InterfaceSerialization ( loadInterface
2module InterfaceSerialization ( loadInterface
2 , interfaceDecode
3 , interfaceDecode
3 , validVersion
4 , validVersion
@@ -8,8 +9,6 @@ import qualified Data.Binary as Binary
8
9
9import qualified Elm.Internal.Version as Version
10import qualified Elm.Internal.Version as Version
10import System.Directory (doesFileExist)
11import System.Directory (doesFileExist)
11−import System.IO (hPutStrLn, stderr)
12−import System.Exit (exitFailure)
13
12
14import SourceSyntax.Module
13import SourceSyntax.Module
15
14
compiler/Metadata/Prelude.hs+2−5
@@ -1,15 +1,12 @@
1+{-# OPTIONS_GHC -W #-}
1module Metadata.Prelude (interfaces, add) where
2module Metadata.Prelude (interfaces, add) where
2
3
3import qualified Data.Map as Map
4import qualified Data.Map as Map
4import qualified Control.Exception as E
5import qualified Control.Exception as E
5import qualified Paths_Elm as Path
6import qualified Paths_Elm as Path
6−import System.Directory
7import System.Exit
7import System.Exit
8−import System.FilePath
9import System.IO
8import System.IO
10import SourceSyntax.Module
9import SourceSyntax.Module
11−import qualified Data.Binary as Binary
12−import qualified Data.ByteString.Lazy as BS
13
10
14import qualified InterfaceSerialization as IS
11import qualified InterfaceSerialization as IS
15
12
@@ -20,7 +17,7 @@ add noPrelude (Module name exs ims decls) = Module name exs (customIms ++ ims) d
20
17
21 addModule (n, method) = case lookup n ims of
18 addModule (n, method) = case lookup n ims of
22 Nothing -> [(n, method)]
19 Nothing -> [(n, method)]
23− Just (As m) -> [(n, method)]
20+ Just (As _) -> [(n, method)]
24 Just _ -> []
21 Just _ -> []
25
22
26prelude :: [(String, ImportMethod)]
23prelude :: [(String, ImportMethod)]
compiler/Parse/Parse.hs+4−9
@@ -1,21 +1,16 @@
1+{-# OPTIONS_GHC -W #-}
1module Parse.Parse (program, dependencies) where
2module Parse.Parse (program, dependencies) where
2
3
3import Control.Applicative ((<$>), (<*>))
4import Control.Applicative ((<$>), (<*>))
4−import Control.Monad
5+import qualified Data.List as List
5−import Data.Char (isSymbol, isDigit)
6−import Data.List (foldl',intercalate)
7import qualified Data.Map as Map
6import qualified Data.Map as Map
8import Text.Parsec hiding (newline,spaces)
7import Text.Parsec hiding (newline,spaces)
9import qualified Text.PrettyPrint as P
8import qualified Text.PrettyPrint as P
10
9
11−import qualified SourceSyntax.Expression as E
12import qualified SourceSyntax.Declaration as D
10import qualified SourceSyntax.Declaration as D
13import qualified SourceSyntax.Module as M
11import qualified SourceSyntax.Module as M
14import Parse.Helpers
12import Parse.Helpers
15−import Parse.Binop (OpTable)
16−import Parse.Expression
17import Parse.Declaration (infixDecl)
13import Parse.Declaration (infixDecl)
18−import Parse.Type
19import Parse.Module
14import Parse.Module
20import qualified Parse.Declaration as Decl
15import qualified Parse.Declaration as Decl
21import Transform.Declaration (combineAnnotations)
16import Transform.Declaration (combineAnnotations)
@@ -45,7 +40,7 @@ programParser =
45
40
46dependencies :: String -> Either [P.Doc] (String, [String])
41dependencies :: String -> Either [P.Doc] (String, [String])
47dependencies =
42dependencies =
48− let getName = intercalate "." . fst in
43+ let getName = List.intercalate "." . fst in
49 setupParser $ do
44 setupParser $ do
50 optional freshLine
45 optional freshLine
51 (,) <$> option "Main" (getName <$> moduleDef `followedBy` freshLine)
46 (,) <$> option "Main" (getName <$> moduleDef `followedBy` freshLine)
@@ -64,7 +59,7 @@ setupParserWithTable table p source =
64 msg overlap =
59 msg overlap =
65 P.vcat [ P.text "Parse error:"
60 P.vcat [ P.text "Parse error:"
66 , P.text $ "Overlapping definitions for infix operators: " ++
61 , P.text $ "Overlapping definitions for infix operators: " ++
67− intercalate " " (Map.keys overlap)
62+ List.intercalate " " (Map.keys overlap)
68 ]
63 ]
69
64
70parseFixities = do
65parseFixities = do
compiler/Parse/Pattern.hs+6−8
@@ -1,13 +1,10 @@
1−
1+{-# OPTIONS_GHC -W #-}
2module Parse.Pattern (term, expr) where
2module Parse.Pattern (term, expr) where
3
3
4−import Control.Applicative ((<$>),(<*>),pure)
4+import Control.Applicative ((<$>))
5−import Control.Monad
6−import Control.Monad.State
7import Data.Char (isUpper)
5import Data.Char (isUpper)
8import Data.List (intercalate)
6import Data.List (intercalate)
9import Text.Parsec hiding (newline,spaces,State)
7import Text.Parsec hiding (newline,spaces,State)
10−import Text.Parsec.Indent
11
8
12import Parse.Helpers
9import Parse.Helpers
13import Parse.Literal
10import Parse.Literal
@@ -20,9 +17,10 @@ basic = choice
20 [ char '_' >> return PAnything
17 [ char '_' >> return PAnything
21 , do v <- var
18 , do v <- var
22 return $ case v of
19 return $ case v of
23− "True" -> PLiteral (Boolean True)
20+ "True" -> PLiteral (Boolean True)
24− "False" -> PLiteral (Boolean False)
21+ "False" -> PLiteral (Boolean False)
25− c : _ -> if isUpper c then PData v [] else PVar v
22+ c:_ | isUpper c -> PData v []
23+ _ -> PVar v
26 , PLiteral <$> literal
24 , PLiteral <$> literal
27 ]
25 ]
28
26
compiler/Type/Environment.hs+4−4
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -W #-}
1module Type.Environment where
2module Type.Environment where
2
3
3import Control.Applicative ((<$>), (<*>))
4import Control.Applicative ((<$>), (<*>))
@@ -9,7 +10,6 @@ import qualified Control.Monad.State as State
9import qualified Data.Traversable as Traverse
10import qualified Data.Traversable as Traverse
10import qualified Data.Map as Map
11import qualified Data.Map as Map
11import Data.List (isPrefixOf)
12import Data.List (isPrefixOf)
12−import qualified Data.UnionFind.IO as UF
13import qualified Text.PrettyPrint as PP
13import qualified Text.PrettyPrint as PP
14
14
15import qualified SourceSyntax.Type as Src
15import qualified SourceSyntax.Type as Src
@@ -44,7 +44,7 @@ makeTypes datatypes =
44 where
44 where
45 nameAndKind (name, tvars, _, _) = (name, length tvars)
45 nameAndKind (name, tvars, _, _) = (name, length tvars)
46
46
47− makeCtor (name, kind) = do
47+ makeCtor (name, _) = do
48 ctor <- VarN <$> namedVar Constant name
48 ctor <- VarN <$> namedVar Constant name
49 return (name, ctor)
49 return (name, ctor)
50
50
@@ -84,7 +84,7 @@ makeConstructors env datatypes = Map.fromList builtins
84
84
85
85
86ctorToType :: Environment -> ADT -> [ (String, IO (Int, [Variable], [Type], Type)) ]
86ctorToType :: Environment -> ADT -> [ (String, IO (Int, [Variable], [Type], Type)) ]
87−ctorToType env (name, tvars, ctors, derivations) =
87+ctorToType env (name, tvars, ctors, _) =
88 zip (map fst ctors) (map inst ctors)
88 zip (map fst ctors) (map inst ctors)
89 where
89 where
90 inst :: (String, [Src.Type]) -> IO (Int, [Variable], [Type], Type)
90 inst :: (String, [Src.Type]) -> IO (Int, [Variable], [Type], Type)
@@ -94,7 +94,7 @@ ctorToType env (name, tvars, ctors, derivations) =
94
94
95
95
96 go :: (String, [Src.Type]) -> State.StateT (VarDict, TypeDict) IO ([Type], Type)
96 go :: (String, [Src.Type]) -> State.StateT (VarDict, TypeDict) IO ([Type], Type)
97− go (ctor, args) = do
97+ go (_, args) = do
98 types <- mapM (instantiator env) args
98 types <- mapM (instantiator env) args
99 returnType <- instantiator env (Src.Data name (map Src.Var tvars))
99 returnType <- instantiator env (Src.Data name (map Src.Var tvars))
100 return (types, returnType)
100 return (types, returnType)
compiler/Type/ExtraChecks.hs+3−3
@@ -1,7 +1,8 @@
1+{-# OPTIONS_GHC -W #-}
2+module Type.ExtraChecks (extraChecks, occursCheck) where
1-- This module contains checks to be run *after* type inference has
3-- This module contains checks to be run *after* type inference has
2-- completed successfully. At that point we still need to do occurs
4-- completed successfully. At that point we still need to do occurs
3-- checks and ensure that `main` has an acceptable type.
5-- checks and ensure that `main` has an acceptable type.
4−module Type.ExtraChecks (extraChecks, occursCheck) where
5
6
6import Control.Applicative ((<$>),(<*>))
7import Control.Applicative ((<$>),(<*>))
7import Control.Monad.State
8import Control.Monad.State
@@ -14,7 +15,6 @@ import Text.PrettyPrint as P
14import SourceSyntax.PrettyPrint (pretty)
15import SourceSyntax.PrettyPrint (pretty)
15import SourceSyntax.Type (Type)
16import SourceSyntax.Type (Type)
16import qualified SourceSyntax.Location as Location
17import qualified SourceSyntax.Location as Location
17−import qualified SourceSyntax.Expression as Expr
18import qualified Data.Traversable as Traverse
18import qualified Data.Traversable as Traverse
19
19
20extraChecks :: Alias.Rules -> TS.Env -> IO (Either [P.Doc] (Map.Map String Type))
20extraChecks :: Alias.Rules -> TS.Env -> IO (Either [P.Doc] (Map.Map String Type))
@@ -47,7 +47,7 @@ occursCheck (name, variable) =
47 case structure desc of
47 case structure desc of
48 Nothing ->
48 Nothing ->
49 modify $ \state -> state { TS.sErrors = fallback : TS.sErrors state }
49 modify $ \state -> state { TS.sErrors = fallback : TS.sErrors state }
50− Just struct ->
50+ Just _ ->
51 do liftIO $ UF.setDescriptor var (desc { structure = Nothing })
51 do liftIO $ UF.setDescriptor var (desc { structure = Nothing })
52 var' <- liftIO $ UF.fresh desc
52 var' <- liftIO $ UF.fresh desc
53 TS.addError (Location.NoSpan name) (Just msg) var var'
53 TS.addError (Location.NoSpan name) (Just msg) var var'
compiler/Type/Inference.hs+2−5
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -W #-}
1module Type.Inference where
2module Type.Inference where
2
3
3import qualified Data.Map as Map
4import qualified Data.Map as Map
@@ -5,20 +6,16 @@ import qualified Data.Map as Map
5import qualified Type.Type as T
6import qualified Type.Type as T
6import qualified Type.Environment as Env
7import qualified Type.Environment as Env
7import qualified Type.Constrain.Expression as TcExpr
8import qualified Type.Constrain.Expression as TcExpr
8−import qualified Type.Constrain.Declaration as TcDecl
9import qualified Type.Solve as Solve
9import qualified Type.Solve as Solve
10
10
11import SourceSyntax.Module as Module
11import SourceSyntax.Module as Module
12−import qualified SourceSyntax.Expression as Expr
13−import SourceSyntax.Location (Located, noneNoDocs)
12+import SourceSyntax.Location (noneNoDocs)
14−import SourceSyntax.PrettyPrint
15import SourceSyntax.Type (Type)
13import SourceSyntax.Type (Type)
16import Text.PrettyPrint
14import Text.PrettyPrint
17import qualified Type.State as TS
15import qualified Type.State as TS
18import Type.ExtraChecks (extraChecks)
16import Type.ExtraChecks (extraChecks)
19import Control.Monad.State (execStateT, forM)
17import Control.Monad.State (execStateT, forM)
20import Control.Monad.Error (runErrorT, liftIO)
18import Control.Monad.Error (runErrorT, liftIO)
21−import Control.Arrow (second)
22import qualified Type.Alias as Alias
19import qualified Type.Alias as Alias
23
20
24import System.IO.Unsafe -- Possible to switch over to the ST monad instead of
21import System.IO.Unsafe -- Possible to switch over to the ST monad instead of
compiler/Type/Solve.hs+1−3
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -W #-}
1module Type.Solve (solve) where
2module Type.Solve (solve) where
2
3
3import Control.Monad
4import Control.Monad
@@ -5,14 +6,11 @@ import Control.Monad.State
5import qualified Data.UnionFind.IO as UF
6import qualified Data.UnionFind.IO as UF
6import qualified Data.Map as Map
7import qualified Data.Map as Map
7import qualified Data.Traversable as Traversable
8import qualified Data.Traversable as Traversable
8−import qualified Data.Maybe as Maybe
9import qualified Data.List as List
9import qualified Data.List as List
10import Type.Type
10import Type.Type
11import Type.Unify
11import Type.Unify
12import qualified Type.ExtraChecks as EC
12import qualified Type.ExtraChecks as EC
13−import qualified Type.Environment as Env
14import qualified Type.State as TS
13import qualified Type.State as TS
15−import qualified Text.PrettyPrint as P
16import SourceSyntax.Location (Located(L), SrcSpan)
14import SourceSyntax.Location (Located(L), SrcSpan)
17
15
18
16
compiler/Type/State.hs+3−5
@@ -1,9 +1,8 @@
1+{-# OPTIONS_GHC -W #-}
1module Type.State where
2module Type.State where
2
3
3import Type.Type
4import Type.Type
4import qualified Data.Map as Map
5import qualified Data.Map as Map
5−import qualified Data.List as List
6−import qualified Type.Environment as Env
7import qualified Data.UnionFind.IO as UF
6import qualified Data.UnionFind.IO as UF
8import Control.Monad.State
7import Control.Monad.State
9import Control.Applicative ((<$>),(<*>), Applicative)
8import Control.Applicative ((<$>),(<*>), Applicative)
@@ -11,7 +10,6 @@ import qualified Data.Traversable as Traversable
11import Text.PrettyPrint as P
10import Text.PrettyPrint as P
12import SourceSyntax.PrettyPrint
11import SourceSyntax.PrettyPrint
13import SourceSyntax.Location
12import SourceSyntax.Location
14−import qualified SourceSyntax.Type as Src
15import qualified Type.Alias as Alias
13import qualified Type.Alias as Alias
16
14
17-- Pool
15-- Pool
@@ -64,8 +62,8 @@ addError span hint t1 t2 =
64 ]
62 ]
65
63
66 location = case span of
64 location = case span of
67− NoSpan msg -> ""
65+ NoSpan _ -> ""
68− Span p1 p2 msg ->
66+ Span p1 p2 _ ->
69 if line p1 == line p2 then " on line " ++ show (line p1)
67 if line p1 == line p2 then " on line " ++ show (line p1)
70 else " between lines " ++ show (line p1) ++ " and " ++ show (line p2)
68 else " between lines " ++ show (line p1) ++ " and " ++ show (line p2)
71
69
compiler/Type/Unify.hs+3−3
@@ -1,3 +1,4 @@
1+{-# OPTIONS_GHC -W #-}
1module Type.Unify (unify) where
2module Type.Unify (unify) where
2
3
3import Type.Type
4import Type.Type
@@ -5,7 +6,6 @@ import qualified Data.UnionFind.IO as UF
5import qualified Data.Map as Map
6import qualified Data.Map as Map
6import qualified Data.Maybe as Maybe
7import qualified Data.Maybe as Maybe
7import qualified Type.State as TS
8import qualified Type.State as TS
8−import Control.Arrow (first,second)
9import Control.Monad.State
9import Control.Monad.State
10import SourceSyntax.Location
10import SourceSyntax.Location
11import Type.PrettyPrint
11import Type.PrettyPrint
@@ -193,8 +193,8 @@ actuallyUnify span variable1 variable2 = do
193
193
194 unmerged a b = Map.filter (not . null) $ Map.union (Map.intersectionWith eat a b) a
194 unmerged a b = Map.filter (not . null) $ Map.union (Map.intersectionWith eat a b) a
195
195
196− eat (x:xs) (y:ys) = eat xs ys
196+ eat (_:xs) (_:ys) = eat xs ys
197− eat xs ys = xs
197+ eat xs _ = xs
198
198
199 _ -> TS.addError span Nothing variable1 variable2
199 _ -> TS.addError span Nothing variable1 variable2
200
200