on master help sign in
Begin using the new boundVarList function
b2f3ff3Evan Czaplicki
compiler/Build/Source.hs+1−2
@@ -2,7 +2,6 @@
2module Build.Source (build) where
2module Build.Source (build) where
3
3
4import qualified Data.Map as Map
4import qualified Data.Map as Map
5−import qualified Data.Set as Set
6import System.FilePath as FP
5import System.FilePath as FP
7import Text.PrettyPrint (Doc)
6import Text.PrettyPrint (Doc)
8
7
@@ -33,7 +32,7 @@ build noPrelude interfaces source =
33
32
34 let exports'
33 let exports'
35 | null exs =
34 | null exs =
36− let get = Set.toList . Pattern.boundVars in
35+ let get = Pattern.boundVarList in
37 concat [ get pattern | Definition (Expr.Definition pattern _ _) <- decls ] ++
36 concat [ get pattern | Definition (Expr.Definition pattern _ _) <- decls ] ++
38 concat [ map fst ctors | Datatype _ _ ctors <- decls ] ++
37 concat [ map fst ctors | Datatype _ _ ctors <- decls ] ++
39 [ name | TypeAlias name _ (Type.Record _ _) <- decls ]
38 [ name | TypeAlias name _ (Type.Record _ _) <- decls ]
compiler/Transform/Check.hs+4−5
@@ -32,7 +32,7 @@ dupErr err x =
32
32
33duplicates :: [D.Declaration] -> [String]
33duplicates :: [D.Declaration] -> [String]
34duplicates decls =
34duplicates decls =
35− map msg (dups (portNames ++ concatMap getNames defPatterns)) ++
35+ map msg (dups (portNames ++ concatMap Pattern.boundVarList defPatterns)) ++
36 case mapM exprDups (portExprs ++ defExprs) of
36 case mapM exprDups (portExprs ++ defExprs) of
37 Left name -> [msg name]
37 Left name -> [msg name]
38 Right _ -> []
38 Right _ -> []
@@ -50,14 +50,13 @@ duplicates decls =
50 D.Out name expr _ -> (name, [expr])
50 D.Out name expr _ -> (name, [expr])
51 D.In name _ -> (name, [])
51 D.In name _ -> (name, [])
52
52
53− getNames = Set.toList . Pattern.boundVars
54−
55− exprDups :: E.LExpr -> Either String E.LExpr
53+ exprDups :: E.Expr -> Either String E.Expr
56 exprDups expr = Expr.crawlLet defsDups expr
54 exprDups expr = Expr.crawlLet defsDups expr
57
55
58 defsDups :: [E.Def] -> Either String [E.Def]
56 defsDups :: [E.Def] -> Either String [E.Def]
59 defsDups defs =
57 defsDups defs =
58+ let varsIn (E.Definition pattern _ _) = Pattern.boundVarList pattern in
60− case dups $ concatMap (\(E.Definition name _ _) -> getNames name) defs of
59+ case dups $ concatMap varsIn defs of
61 [] -> Right defs
60 [] -> Right defs
62 name:_ -> Left name
61 name:_ -> Left name
63
62