on master help sign in
Stop recognizing locally defined binops
a0ee1f5Evan Czaplicki
src/Canonicalize/Environment/Local.hs+4−23
@@ -1,7 +1,7 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3module Canonicalize.Environment.Local
3module Canonicalize.Environment.Local
4− ( addVarsTypesOps
4+ ( addVarsAndTypes
5 , addPatterns
5 , addPatterns
6 )
6 )
7 where
7 where
@@ -20,7 +20,6 @@ import qualified Canonicalize.Environment.Dups as Dups
20import qualified Canonicalize.Environment.Internals as Env
20import qualified Canonicalize.Environment.Internals as Env
21import qualified Canonicalize.Type as Type
21import qualified Canonicalize.Type as Type
22import qualified Data.Bag as Bag
22import qualified Data.Bag as Bag
23−import qualified Data.OneOrMore as OneOrMore
24import qualified Elm.Name as N
23import qualified Elm.Name as N
25import qualified Reporting.Annotation as A
24import qualified Reporting.Annotation as A
26import qualified Reporting.Error.Canonicalize as Error
25import qualified Reporting.Error.Canonicalize as Error
@@ -47,9 +46,9 @@ type Result a =
47-- This code checks for (1) duplicate names and (2) cycles in type aliases.
46-- This code checks for (1) duplicate names and (2) cycles in type aliases.
48
47
49
48
50−addVarsTypesOps :: Valid.Module -> Env.Env -> Result Env.Env
49+addVarsAndTypes :: Valid.Module -> Env.Env -> Result Env.Env
51−addVarsTypesOps module_ env =
50+addVarsAndTypes module_ env =
52− addVars module_ =<< addTypes module_ =<< addBinops module_ env
51+ addVars module_ =<< addTypes module_ env
53
52
54
53
55merge
54merge
@@ -106,24 +105,6 @@ addPatterns unions (Env.Env home vars types patterns binops) =
106
105
107
106
108
107
109−-- ADD BINOPS
110−
111−
112−addBinops :: Valid.Module -> Env.Env -> Result Env.Env
113−addBinops (Valid.Module _ _ _ _ _ _ _ _ ops _) (Env.Env home vars types patterns binops) =
114− let
115− toInfo (Valid.Binop (A.A region op) assoc prec name) =
116− Dups.info op region () (OneOrMore.one (Env.Binop op home name assoc prec))
117−
118− toError op () () =
119− Error.DuplicateBinop op
120− in
121− do opDict <- Dups.detect toError $ map toInfo ops
122− let newBinops = Map.unionWith OneOrMore.more opDict binops
123− return $ Env.Env home vars types patterns newBinops
124−
125−
126−
127-- ADD VARS
108-- ADD VARS
128
109
129
110
src/Canonicalize/Module.hs+1−1
@@ -53,7 +53,7 @@ canonicalize
53canonicalize pkg importDict interfaces module_@(Valid.Module name _ _ exports imports decls unions aliases binops effects) =
53canonicalize pkg importDict interfaces module_@(Valid.Module name _ _ exports imports decls unions aliases binops effects) =
54 do let home = ModuleName.Canonical pkg name
54 do let home = ModuleName.Canonical pkg name
55
55
56− startEnv <- Local.addVarsTypesOps module_ =<<
56+ startEnv <- Local.addVarsAndTypes module_ =<<
57 Foreign.createInitialEnv home importDict interfaces imports
57 Foreign.createInitialEnv home importDict interfaces imports
58
58
59 (cunions, caliases) <-
59 (cunions, caliases) <-