on master help sign in
Switch Canonicalize/ over to Data.Name
42f3721Evan Czaplicki
compiler/src/Canonicalize/Effects.hs+20−20
@@ -8,6 +8,7 @@ module Canonicalize.Effects
8
8
9import qualified Data.Foldable as F
9import qualified Data.Foldable as F
10import qualified Data.Map as Map
10import qualified Data.Map as Map
11+import qualified Data.Name as Name
11
12
12import qualified AST.Canonical as Can
13import qualified AST.Canonical as Can
13import qualified AST.Valid as Valid
14import qualified AST.Valid as Valid
@@ -15,7 +16,6 @@ import qualified AST.Module.Name as ModuleName
15import qualified AST.Utils.Type as Type
16import qualified AST.Utils.Type as Type
16import qualified Canonicalize.Environment as Env
17import qualified Canonicalize.Environment as Env
17import qualified Canonicalize.Type as Type
18import qualified Canonicalize.Type as Type
18−import qualified Elm.Name as N
19import qualified Reporting.Annotation as A
19import qualified Reporting.Annotation as A
20import qualified Reporting.Error.Canonicalize as Error
20import qualified Reporting.Error.Canonicalize as Error
21import qualified Reporting.Region as R
21import qualified Reporting.Region as R
@@ -37,7 +37,7 @@ type Result i w a =
37canonicalize
37canonicalize
38 :: Env.Env
38 :: Env.Env
39 -> [A.Located Valid.Decl]
39 -> [A.Located Valid.Decl]
40− -> Map.Map N.Name union
40+ -> Map.Map Name.Name union
41 -> Valid.Effects
41 -> Valid.Effects
42 -> Result i w Can.Effects
42 -> Result i w Can.Effects
43canonicalize env decls unions effects =
43canonicalize env decls unions effects =
@@ -79,12 +79,12 @@ canonicalize env decls unions effects =
79-- CANONICALIZE PORT
79-- CANONICALIZE PORT
80
80
81
81
82−canonicalizePort :: Env.Env -> Valid.Port -> Result i w (N.Name, Can.Port)
82+canonicalizePort :: Env.Env -> Valid.Port -> Result i w (Name.Name, Can.Port)
83canonicalizePort env (Valid.Port (A.At region portName) tipe) =
83canonicalizePort env (Valid.Port (A.At region portName) tipe) =
84 do (Can.Forall freeVars ctipe) <- Type.toAnnotation env tipe
84 do (Can.Forall freeVars ctipe) <- Type.toAnnotation env tipe
85 case reverse (Type.delambda (Type.deepDealias ctipe)) of
85 case reverse (Type.delambda (Type.deepDealias ctipe)) of
86 Can.TType home name [msg] : revArgs
86 Can.TType home name [msg] : revArgs
87− | home == ModuleName.cmd && name == N.cmd ->
87+ | home == ModuleName.cmd && name == Name.cmd ->
88 case revArgs of
88 case revArgs of
89 [] ->
89 [] ->
90 Result.throw (Error.PortTypeInvalid region portName Error.CmdNoArg)
90 Result.throw (Error.PortTypeInvalid region portName Error.CmdNoArg)
@@ -105,7 +105,7 @@ canonicalizePort env (Valid.Port (A.At region portName) tipe) =
105 _ ->
105 _ ->
106 Result.throw (Error.PortTypeInvalid region portName (Error.CmdExtraArgs (length revArgs)))
106 Result.throw (Error.PortTypeInvalid region portName (Error.CmdExtraArgs (length revArgs)))
107
107
108− | home == ModuleName.sub && name == N.sub ->
108+ | home == ModuleName.sub && name == Name.sub ->
109 case revArgs of
109 case revArgs of
110 [Can.TLambda incomingType (Can.TVar msg1)] ->
110 [Can.TLambda incomingType (Can.TVar msg1)] ->
111 case msg of
111 case msg of
@@ -131,7 +131,7 @@ canonicalizePort env (Valid.Port (A.At region portName) tipe) =
131-- VERIFY MANAGER
131-- VERIFY MANAGER
132
132
133
133
134−verifyEffectType :: A.Located N.Name -> Map.Map N.Name a -> Result i w N.Name
134+verifyEffectType :: A.Located Name.Name -> Map.Map Name.Name a -> Result i w Name.Name
135verifyEffectType (A.At region name) unions =
135verifyEffectType (A.At region name) unions =
136 if Map.member name unions then
136 if Map.member name unions then
137 Result.ok name
137 Result.ok name
@@ -139,12 +139,12 @@ verifyEffectType (A.At region name) unions =
139 Result.throw (Error.EffectNotFound region name)
139 Result.throw (Error.EffectNotFound region name)
140
140
141
141
142−toNameRegion :: A.Located Valid.Decl -> (N.Name, R.Region)
142+toNameRegion :: A.Located Valid.Decl -> (Name.Name, R.Region)
143toNameRegion (A.At _ (Valid.Decl (A.At region name) _ _ _)) =
143toNameRegion (A.At _ (Valid.Decl (A.At region name) _ _ _)) =
144 (name, region)
144 (name, region)
145
145
146
146
147−verifyManager :: R.Region -> Map.Map N.Name R.Region -> N.Name -> Result i w R.Region
147+verifyManager :: R.Region -> Map.Map Name.Name R.Region -> Name.Name -> Result i w R.Region
148verifyManager tagRegion decls name =
148verifyManager tagRegion decls name =
149 case Map.lookup name decls of
149 case Map.lookup name decls of
150 Just region ->
150 Just region ->
@@ -210,43 +210,43 @@ checkFieldPayload (Can.FieldType _ tipe) =
210 checkPayload tipe
210 checkPayload tipe
211
211
212
212
213−isIntFloatBool :: ModuleName.Canonical -> N.Name -> Bool
213+isIntFloatBool :: ModuleName.Canonical -> Name.Name -> Bool
214isIntFloatBool home name =
214isIntFloatBool home name =
215 home == ModuleName.basics
215 home == ModuleName.basics
216 &&
216 &&
217− (name == N.int || name == N.float || name == N.bool)
217+ (name == Name.int || name == Name.float || name == Name.bool)
218
218
219
219
220−isString :: ModuleName.Canonical -> N.Name -> Bool
220+isString :: ModuleName.Canonical -> Name.Name -> Bool
221isString home name =
221isString home name =
222 home == ModuleName.string
222 home == ModuleName.string
223 &&
223 &&
224− name == N.string
224+ name == Name.string
225
225
226
226
227−isJson :: ModuleName.Canonical -> N.Name -> Bool
227+isJson :: ModuleName.Canonical -> Name.Name -> Bool
228isJson home name =
228isJson home name =
229 home == ModuleName.jsonEncode
229 home == ModuleName.jsonEncode
230 &&
230 &&
231− name == N.value
231+ name == Name.value
232
232
233
233
234−isList :: ModuleName.Canonical -> N.Name -> Bool
234+isList :: ModuleName.Canonical -> Name.Name -> Bool
235isList home name =
235isList home name =
236 home == ModuleName.list
236 home == ModuleName.list
237 &&
237 &&
238− name == N.list
238+ name == Name.list
239
239
240
240
241−isMaybe :: ModuleName.Canonical -> N.Name -> Bool
241+isMaybe :: ModuleName.Canonical -> Name.Name -> Bool
242isMaybe home name =
242isMaybe home name =
243 home == ModuleName.maybe
243 home == ModuleName.maybe
244 &&
244 &&
245− name == N.maybe
245+ name == Name.maybe
246
246
247
247
248−isArray :: ModuleName.Canonical -> N.Name -> Bool
248+isArray :: ModuleName.Canonical -> Name.Name -> Bool
249isArray home name =
249isArray home name =
250 home == ModuleName.array
250 home == ModuleName.array
251 &&
251 &&
252− name == N.array
252+ name == Name.array
compiler/src/Canonicalize/Environment.hs+17−17
@@ -21,12 +21,12 @@ module Canonicalize.Environment
21import qualified Data.Map.Merge.Strict as Map
21import qualified Data.Map.Merge.Strict as Map
22import qualified Data.Map.Strict as Map
22import qualified Data.Map.Strict as Map
23import qualified Data.Map.Strict.Internal as I
23import qualified Data.Map.Strict.Internal as I
24+import qualified Data.Name as Name
24
25
25import qualified AST.Utils.Binop as Binop
26import qualified AST.Utils.Binop as Binop
26import qualified AST.Canonical as Can
27import qualified AST.Canonical as Can
27import qualified AST.Module.Name as ModuleName
28import qualified AST.Module.Name as ModuleName
28import qualified Data.Index as Index
29import qualified Data.Index as Index
29−import qualified Elm.Name as N
30import qualified Reporting.Error.Canonicalize as Error
30import qualified Reporting.Error.Canonicalize as Error
31import qualified Reporting.Region as R
31import qualified Reporting.Region as R
32import qualified Reporting.Result as Result
32import qualified Reporting.Result as Result
@@ -47,7 +47,7 @@ type Result i w a =
47data Env =
47data Env =
48 Env
48 Env
49 { _home :: ModuleName.Canonical
49 { _home :: ModuleName.Canonical
50− , _vars :: Map.Map N.Name Var
50+ , _vars :: Map.Map Name.Name Var
51 , _types :: Exposed Type
51 , _types :: Exposed Type
52 , _ctors :: Exposed Ctor
52 , _ctors :: Exposed Ctor
53 , _binops :: Exposed Binop
53 , _binops :: Exposed Binop
@@ -58,11 +58,11 @@ data Env =
58
58
59
59
60type Exposed a =
60type Exposed a =
61− Map.Map N.Name (Map.Map ModuleName.Canonical a)
61+ Map.Map Name.Name (Map.Map ModuleName.Canonical a)
62
62
63
63
64type Qualified a =
64type Qualified a =
65− Map.Map N.Name (Map.Map N.Name (Map.Map ModuleName.Canonical a))
65+ Map.Map Name.Name (Map.Map Name.Name (Map.Map ModuleName.Canonical a))
66
66
67
67
68
68
@@ -80,7 +80,7 @@ data Var
80
80
81
81
82data Type
82data Type
83− = Alias Int ModuleName.Canonical [N.Name] Can.Type
83+ = Alias Int ModuleName.Canonical [Name.Name] Can.Type
84 | Union Int ModuleName.Canonical
84 | Union Int ModuleName.Canonical
85
85
86
86
@@ -89,10 +89,10 @@ data Type
89
89
90
90
91data Ctor
91data Ctor
92− = RecordCtor ModuleName.Canonical [N.Name] Can.Type
92+ = RecordCtor ModuleName.Canonical [Name.Name] Can.Type
93 | Ctor
93 | Ctor
94 { _c_home :: ModuleName.Canonical
94 { _c_home :: ModuleName.Canonical
95− , _c_type :: N.Name
95+ , _c_type :: Name.Name
96 , _c_union :: Can.Union
96 , _c_union :: Can.Union
97 , _c_index :: Index.ZeroBased
97 , _c_index :: Index.ZeroBased
98 , _c_args :: [Can.Type]
98 , _c_args :: [Can.Type]
@@ -105,9 +105,9 @@ data Ctor
105
105
106data Binop =
106data Binop =
107 Binop
107 Binop
108− { _op :: N.Name
108+ { _op :: Name.Name
109 , _op_home :: ModuleName.Canonical
109 , _op_home :: ModuleName.Canonical
110− , _op_name :: N.Name
110+ , _op_name :: Name.Name
111 , _op_annotation :: Can.Annotation
111 , _op_annotation :: Can.Annotation
112 , _op_associativity :: Binop.Associativity
112 , _op_associativity :: Binop.Associativity
113 , _op_precedence :: Binop.Precedence
113 , _op_precedence :: Binop.Precedence
@@ -118,7 +118,7 @@ data Binop =
118-- VARIABLE -- ADD LOCALS
118-- VARIABLE -- ADD LOCALS
119
119
120
120
121−addLocals :: Map.Map N.Name R.Region -> Env -> Result i w Env
121+addLocals :: Map.Map Name.Name R.Region -> Env -> Result i w Env
122addLocals names (Env home vars ts cs bs qvs qts qcs) =
122addLocals names (Env home vars ts cs bs qvs qts qcs) =
123 do newVars <-
123 do newVars <-
124 Map.mergeA
124 Map.mergeA
@@ -131,12 +131,12 @@ addLocals names (Env home vars ts cs bs qvs qts qcs) =
131 Result.ok (Env home newVars ts cs bs qvs qts qcs)
131 Result.ok (Env home newVars ts cs bs qvs qts qcs)
132
132
133
133
134−addLocalLeft :: N.Name -> R.Region -> Var
134+addLocalLeft :: Name.Name -> R.Region -> Var
135addLocalLeft _ region =
135addLocalLeft _ region =
136 Local region
136 Local region
137
137
138
138
139−addLocalBoth :: N.Name -> R.Region -> Var -> Result i w Var
139+addLocalBoth :: Name.Name -> R.Region -> Var -> Result i w Var
140addLocalBoth name region var =
140addLocalBoth name region var =
141 case var of
141 case var of
142 Foreign _ ->
142 Foreign _ ->
@@ -153,7 +153,7 @@ addLocalBoth name region var =
153-- FIND TYPE
153-- FIND TYPE
154
154
155
155
156−findType :: R.Region -> Env -> N.Name -> Result i w Type
156+findType :: R.Region -> Env -> Name.Name -> Result i w Type
157findType region (Env _ _ ts _ _ _ qts _) name =
157findType region (Env _ _ ts _ _ _ qts _) name =
158 case Map.lookup name ts of
158 case Map.lookup name ts of
159 Just (I.Bin 1 _ tipe _ _) ->
159 Just (I.Bin 1 _ tipe _ _) ->
@@ -166,7 +166,7 @@ findType region (Env _ _ ts _ _ _ qts _) name =
166 Result.throw (Error.NotFoundType region Nothing name (toPossibleNames ts qts))
166 Result.throw (Error.NotFoundType region Nothing name (toPossibleNames ts qts))
167
167
168
168
169−findTypeQual :: R.Region -> Env -> N.Name -> N.Name -> Result i w Type
169+findTypeQual :: R.Region -> Env -> Name.Name -> Name.Name -> Result i w Type
170findTypeQual region (Env _ _ ts _ _ _ qts _) prefix name =
170findTypeQual region (Env _ _ ts _ _ _ qts _) prefix name =
171 case Map.lookup prefix qts of
171 case Map.lookup prefix qts of
172 Just qualified ->
172 Just qualified ->
@@ -188,7 +188,7 @@ findTypeQual region (Env _ _ ts _ _ _ qts _) prefix name =
188-- FIND CTOR
188-- FIND CTOR
189
189
190
190
191−findCtor :: R.Region -> Env -> N.Name -> Result i w Ctor
191+findCtor :: R.Region -> Env -> Name.Name -> Result i w Ctor
192findCtor region (Env _ _ _ cs _ _ _ qcs) name =
192findCtor region (Env _ _ _ cs _ _ _ qcs) name =
193 case Map.lookup name cs of
193 case Map.lookup name cs of
194 Just (I.Bin 1 _ ctor _ _) ->
194 Just (I.Bin 1 _ ctor _ _) ->
@@ -201,7 +201,7 @@ findCtor region (Env _ _ _ cs _ _ _ qcs) name =
201 Result.throw (Error.NotFoundCtor region Nothing name (toPossibleNames cs qcs))
201 Result.throw (Error.NotFoundCtor region Nothing name (toPossibleNames cs qcs))
202
202
203
203
204−findCtorQual :: R.Region -> Env -> N.Name -> N.Name -> Result i w Ctor
204+findCtorQual :: R.Region -> Env -> Name.Name -> Name.Name -> Result i w Ctor
205findCtorQual region (Env _ _ _ cs _ _ _ qcs) prefix name =
205findCtorQual region (Env _ _ _ cs _ _ _ qcs) prefix name =
206 case Map.lookup prefix qcs of
206 case Map.lookup prefix qcs of
207 Just qualified ->
207 Just qualified ->
@@ -223,7 +223,7 @@ findCtorQual region (Env _ _ _ cs _ _ _ qcs) prefix name =
223-- FIND BINOP
223-- FIND BINOP
224
224
225
225
226−findBinop :: R.Region -> Env -> N.Name -> Result i w Binop
226+findBinop :: R.Region -> Env -> Name.Name -> Result i w Binop
227findBinop region (Env _ _ _ _ binops _ _ _) name =
227findBinop region (Env _ _ _ _ binops _ _ _) name =
228 case Map.lookup name binops of
228 case Map.lookup name binops of
229 Just (I.Bin 1 _ binop _ _) ->
229 Just (I.Bin 1 _ binop _ _) ->
compiler/src/Canonicalize/Environment/Dups.hs+11−11
@@ -15,9 +15,9 @@ module Canonicalize.Environment.Dups
15
15
16
16
17import qualified Data.Map as Map
17import qualified Data.Map as Map
18+import qualified Data.Name as Name
18
19
19import qualified Data.OneOrMore as OneOrMore
20import qualified Data.OneOrMore as OneOrMore
20−import qualified Elm.Name as N
21import qualified Reporting.Annotation as A
21import qualified Reporting.Annotation as A
22import qualified Reporting.Error.Canonicalize as Error
22import qualified Reporting.Error.Canonicalize as Error
23import qualified Reporting.Region as R
23import qualified Reporting.Region as R
@@ -29,7 +29,7 @@ import qualified Reporting.Result as Result
29
29
30
30
31type Dict value =
31type Dict value =
32− Map.Map N.Name (OneOrMore.OneOrMore (Info value))
32+ Map.Map Name.Name (OneOrMore.OneOrMore (Info value))
33
33
34
34
35data Info value =
35data Info value =
@@ -44,15 +44,15 @@ data Info value =
44
44
45
45
46type ToError =
46type ToError =
47− N.Name -> R.Region -> R.Region -> Error.Error
47+ Name.Name -> R.Region -> R.Region -> Error.Error
48
48
49
49
50−detect :: ToError -> Dict a -> Result.Result i w Error.Error (Map.Map N.Name a)
50+detect :: ToError -> Dict a -> Result.Result i w Error.Error (Map.Map Name.Name a)
51detect toError dict =
51detect toError dict =
52 Map.traverseWithKey (detectHelp toError) dict
52 Map.traverseWithKey (detectHelp toError) dict
53
53
54
54
55−detectHelp :: ToError -> N.Name -> OneOrMore.OneOrMore (Info a) -> Result.Result i w Error.Error a
55+detectHelp :: ToError -> Name.Name -> OneOrMore.OneOrMore (Info a) -> Result.Result i w Error.Error a
56detectHelp toError name values =
56detectHelp toError name values =
57 case values of
57 case values of
58 OneOrMore.One (Info _ value) ->
58 OneOrMore.One (Info _ value) ->
@@ -67,22 +67,22 @@ detectHelp toError name values =
67-- CHECK FIELDS
67-- CHECK FIELDS
68
68
69
69
70−checkFields :: [(A.Located N.Name, a)] -> Result.Result i w Error.Error (Map.Map N.Name a)
70+checkFields :: [(A.Located Name.Name, a)] -> Result.Result i w Error.Error (Map.Map Name.Name a)
71checkFields fields =
71checkFields fields =
72 detect Error.DuplicateField (foldr addField none fields)
72 detect Error.DuplicateField (foldr addField none fields)
73
73
74
74
75−addField :: (A.Located N.Name, a) -> Dict a -> Dict a
75+addField :: (A.Located Name.Name, a) -> Dict a -> Dict a
76addField (A.At region name, value) dups =
76addField (A.At region name, value) dups =
77 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region value)) dups
77 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region value)) dups
78
78
79
79
80−checkFields' :: (R.Region -> a -> b) -> [(A.Located N.Name, a)] -> Result.Result i w Error.Error (Map.Map N.Name b)
80+checkFields' :: (R.Region -> a -> b) -> [(A.Located Name.Name, a)] -> Result.Result i w Error.Error (Map.Map Name.Name b)
81checkFields' toValue fields =
81checkFields' toValue fields =
82 detect Error.DuplicateField (foldr (addField' toValue) none fields)
82 detect Error.DuplicateField (foldr (addField' toValue) none fields)
83
83
84
84
85−addField' :: (R.Region -> a -> b) -> (A.Located N.Name, a) -> Dict b -> Dict b
85+addField' :: (R.Region -> a -> b) -> (A.Located Name.Name, a) -> Dict b -> Dict b
86addField' toValue (A.At region name, value) dups =
86addField' toValue (A.At region name, value) dups =
87 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region (toValue region value))) dups
87 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region (toValue region value))) dups
88
88
@@ -96,12 +96,12 @@ none =
96 Map.empty
96 Map.empty
97
97
98
98
99−one :: N.Name -> R.Region -> value -> Dict value
99+one :: Name.Name -> R.Region -> value -> Dict value
100one name region value =
100one name region value =
101 Map.singleton name (OneOrMore.one (Info region value))
101 Map.singleton name (OneOrMore.one (Info region value))
102
102
103
103
104−insert :: N.Name -> R.Region -> a -> Dict a -> Dict a
104+insert :: Name.Name -> R.Region -> a -> Dict a -> Dict a
105insert name region value dict =
105insert name region value dict =
106 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region value)) dict
106 Map.insertWith OneOrMore.more name (OneOrMore.one (Info region value)) dict
107
107
compiler/src/Canonicalize/Environment/Foreign.hs+14−14
@@ -8,15 +8,15 @@ module Canonicalize.Environment.Foreign
8
8
9
9
10import Control.Monad (foldM)
10import Control.Monad (foldM)
11+import qualified Data.List as List
11import qualified Data.Map.Strict as Map
12import qualified Data.Map.Strict as Map
13+import qualified Data.Name as Name
12
14
13import qualified AST.Canonical as Can
15import qualified AST.Canonical as Can
14import qualified AST.Source as Src
16import qualified AST.Source as Src
15import qualified AST.Module.Name as ModuleName
17import qualified AST.Module.Name as ModuleName
16import qualified Canonicalize.Environment as Env
18import qualified Canonicalize.Environment as Env
17−import qualified Data.List as List
18import qualified Elm.Interface as I
19import qualified Elm.Interface as I
19−import qualified Elm.Name as N
20import qualified Reporting.Annotation as A
20import qualified Reporting.Annotation as A
21import qualified Reporting.Error.Canonicalize as Error
21import qualified Reporting.Error.Canonicalize as Error
22import qualified Reporting.Result as Result
22import qualified Reporting.Result as Result
@@ -35,7 +35,7 @@ type Result i w a =
35
35
36
36
37type ImportDict =
37type ImportDict =
38− Map.Map N.Name ModuleName.Canonical
38+ Map.Map Name.Name ModuleName.Canonical
39
39
40
40
41createInitialEnv :: ModuleName.Canonical -> ImportDict -> I.Interfaces -> [Src.Import] -> Result i w Env.Env
41createInitialEnv :: ModuleName.Canonical -> ImportDict -> I.Interfaces -> [Src.Import] -> Result i w Env.Env
@@ -47,7 +47,7 @@ createInitialEnv home importDict interfaces sourceImports =
47
47
48isNotKernel :: Src.Import -> Bool
48isNotKernel :: Src.Import -> Bool
49isNotKernel (Src.Import (A.At _ name) _ _) =
49isNotKernel (Src.Import (A.At _ name) _ _) =
50− not (ModuleName.isKernel name)
50+ not (Name.isKernel name)
51
51
52
52
53
53
@@ -118,7 +118,7 @@ addExposed =
118 Map.unionWith Map.union
118 Map.unionWith Map.union
119
119
120
120
121−addQualified :: N.Name -> Env.Exposed a -> Env.Qualified a -> Env.Qualified a
121+addQualified :: Name.Name -> Env.Exposed a -> Env.Qualified a -> Env.Qualified a
122addQualified prefix exposed qualified =
122addQualified prefix exposed qualified =
123 Map.insertWith addExposed prefix exposed qualified
123 Map.insertWith addExposed prefix exposed qualified
124
124
@@ -127,12 +127,12 @@ addQualified prefix exposed qualified =
127-- UNION
127-- UNION
128
128
129
129
130−unionToType :: ModuleName.Canonical -> N.Name -> I.Union -> Maybe (Env.Type, Env.Exposed Env.Ctor)
130+unionToType :: ModuleName.Canonical -> Name.Name -> I.Union -> Maybe (Env.Type, Env.Exposed Env.Ctor)
131unionToType home name union =
131unionToType home name union =
132 unionToTypeHelp home name <$> I.toPublicUnion union
132 unionToTypeHelp home name <$> I.toPublicUnion union
133
133
134
134
135−unionToTypeHelp :: ModuleName.Canonical -> N.Name -> Can.Union -> (Env.Type, Env.Exposed Env.Ctor)
135+unionToTypeHelp :: ModuleName.Canonical -> Name.Name -> Can.Union -> (Env.Type, Env.Exposed Env.Ctor)
136unionToTypeHelp home name union@(Can.Union vars ctors _ _) =
136unionToTypeHelp home name union@(Can.Union vars ctors _ _) =
137 let
137 let
138 addCtor dict (Can.Ctor ctor index _ args) =
138 addCtor dict (Can.Ctor ctor index _ args) =
@@ -147,12 +147,12 @@ unionToTypeHelp home name union@(Can.Union vars ctors _ _) =
147-- ALIAS
147-- ALIAS
148
148
149
149
150−aliasToType :: ModuleName.Canonical -> N.Name -> I.Alias -> Maybe (Env.Type, Env.Exposed Env.Ctor)
150+aliasToType :: ModuleName.Canonical -> Name.Name -> I.Alias -> Maybe (Env.Type, Env.Exposed Env.Ctor)
151aliasToType home name alias =
151aliasToType home name alias =
152 aliasToTypeHelp home name <$> I.toPublicAlias alias
152 aliasToTypeHelp home name <$> I.toPublicAlias alias
153
153
154
154
155−aliasToTypeHelp :: ModuleName.Canonical -> N.Name -> Can.Alias -> (Env.Type, Env.Exposed Env.Ctor)
155+aliasToTypeHelp :: ModuleName.Canonical -> Name.Name -> Can.Alias -> (Env.Type, Env.Exposed Env.Ctor)
156aliasToTypeHelp home name (Can.Alias vars tipe) =
156aliasToTypeHelp home name (Can.Alias vars tipe) =
157 (
157 (
158 Env.Alias (length vars) home vars tipe
158 Env.Alias (length vars) home vars tipe
@@ -178,7 +178,7 @@ aliasToTypeHelp home name (Can.Alias vars tipe) =
178-- BINOP
178-- BINOP
179
179
180
180
181−binopToBinop :: ModuleName.Canonical -> N.Name -> I.Binop -> Map.Map ModuleName.Canonical Env.Binop
181+binopToBinop :: ModuleName.Canonical -> Name.Name -> I.Binop -> Map.Map ModuleName.Canonical Env.Binop
182binopToBinop home op (I.Binop name annotation associativity precedence) =
182binopToBinop home op (I.Binop name annotation associativity precedence) =
183 Map.singleton home (Env.Binop op home name annotation associativity precedence)
183 Map.singleton home (Env.Binop op home name annotation associativity precedence)
184
184
@@ -190,8 +190,8 @@ binopToBinop home op (I.Binop name annotation associativity precedence) =
190addExposedValue
190addExposedValue
191 :: ModuleName.Canonical
191 :: ModuleName.Canonical
192 -> Env.Exposed Can.Annotation
192 -> Env.Exposed Can.Annotation
193− -> Map.Map N.Name (Env.Type, Env.Exposed Env.Ctor)
193+ -> Map.Map Name.Name (Env.Type, Env.Exposed Env.Ctor)
194− -> Map.Map N.Name I.Binop
194+ -> Map.Map Name.Name I.Binop
195 -> State
195 -> State
196 -> A.Located Src.Exposed
196 -> A.Located Src.Exposed
197 -> Result i w State
197 -> Result i w State
@@ -262,7 +262,7 @@ addExposedValue home vars types binops (State vs ts cs bs qvs qts qcs) (A.At reg
262
262
263
263
264
264
265−toCtors :: Map.Map N.Name (Env.Type, Env.Exposed Env.Ctor) -> Map.Map N.Name N.Name
265+toCtors :: Map.Map Name.Name (Env.Type, Env.Exposed Env.Ctor) -> Map.Map Name.Name Name.Name
266toCtors types =
266toCtors types =
267 Map.foldr addCtors Map.empty types
267 Map.foldr addCtors Map.empty types
268 where
268 where
@@ -286,7 +286,7 @@ data Import =
286 Import
286 Import
287 { _name :: ModuleName.Canonical
287 { _name :: ModuleName.Canonical
288 , _interface :: I.Interface
288 , _interface :: I.Interface
289− , _prefix :: N.Name
289+ , _prefix :: Name.Name
290 , _exposing :: Src.Exposing
290 , _exposing :: Src.Exposing
291 }
291 }
292
292
compiler/src/Canonicalize/Environment/Local.hs+14−14
@@ -10,6 +10,7 @@ import Control.Monad (foldM)
10import qualified Data.Graph as Graph
10import qualified Data.Graph as Graph
11import qualified Data.List as List
11import qualified Data.List as List
12import qualified Data.Map.Strict as Map
12import qualified Data.Map.Strict as Map
13+import qualified Data.Name as Name
13
14
14import qualified AST.Canonical as Can
15import qualified AST.Canonical as Can
15import qualified AST.Source as Src
16import qualified AST.Source as Src
@@ -19,7 +20,6 @@ import qualified Canonicalize.Environment as Env
19import qualified Canonicalize.Environment.Dups as Dups
20import qualified Canonicalize.Environment.Dups as Dups
20import qualified Canonicalize.Type as Type
21import qualified Canonicalize.Type as Type
21import qualified Data.Index as Index
22import qualified Data.Index as Index
22−import qualified Elm.Name as N
23import qualified Reporting.Annotation as A
23import qualified Reporting.Annotation as A
24import qualified Reporting.Error.Canonicalize as Error
24import qualified Reporting.Error.Canonicalize as Error
25import qualified Reporting.Region as R
25import qualified Reporting.Region as R
@@ -34,8 +34,8 @@ type Result i w a =
34 Result.Result i w Error.Error a
34 Result.Result i w Error.Error a
35
35
36
36
37−type Unions = Map.Map N.Name Can.Union
37+type Unions = Map.Map Name.Name Can.Union
38−type Aliases = Map.Map N.Name Can.Alias
38+type Aliases = Map.Map Name.Name Can.Alias
39
39
40
40
41add :: Valid.Module -> Env.Env -> Result i w (Env.Env, Unions, Aliases)
41add :: Valid.Module -> Env.Env -> Result i w (Env.Env, Unions, Aliases)
@@ -55,7 +55,7 @@ addVars module_ (Env.Env home vs ts cs bs qvs qts qcs) =
55 Result.ok $ Env.Env home vs2 ts cs bs qvs qts qcs
55 Result.ok $ Env.Env home vs2 ts cs bs qvs qts qcs
56
56
57
57
58−collectVars :: Valid.Module -> Result i w (Map.Map N.Name Env.Var)
58+collectVars :: Valid.Module -> Result i w (Map.Map Name.Name Env.Var)
59collectVars (Valid.Module _ _ _ _ _ decls _ _ _ effects) =
59collectVars (Valid.Module _ _ _ _ _ decls _ _ _ effects) =
60 let
60 let
61 addDecl dict (A.At _ (Valid.Decl (A.At region name) _ _ _)) =
61 addDecl dict (A.At _ (Valid.Decl (A.At region name) _ _ _)) =
@@ -152,12 +152,12 @@ addAlias env@(Env.Env home vs ts cs bs qvs qts qcs) scc =
152-- DETECT TYPE ALIAS CYCLES
152-- DETECT TYPE ALIAS CYCLES
153
153
154
154
155−toNode :: Valid.Alias -> (Valid.Alias, N.Name, [N.Name])
155+toNode :: Valid.Alias -> (Valid.Alias, Name.Name, [Name.Name])
156toNode alias@(Valid.Alias _ (A.At _ name) _ tipe) =
156toNode alias@(Valid.Alias _ (A.At _ name) _ tipe) =
157 ( alias, name, getEdges [] tipe )
157 ( alias, name, getEdges [] tipe )
158
158
159
159
160−getEdges :: [N.Name] -> Src.Type -> [N.Name]
160+getEdges :: [Name.Name] -> Src.Type -> [Name.Name]
161getEdges edges (A.At _ tipe) =
161getEdges edges (A.At _ tipe) =
162 case tipe of
162 case tipe of
163 Src.TLambda arg result ->
163 Src.TLambda arg result ->
@@ -206,7 +206,7 @@ checkUnionFreeVars (Valid.Union unionRegion (A.At _ name) args ctors) =
206 Error.TypeVarsUnboundInUnion unionRegion name (map A.toValue args) unbound unbounds
206 Error.TypeVarsUnboundInUnion unionRegion name (map A.toValue args) unbound unbounds
207
207
208
208
209−checkAliasFreeVars :: Valid.Alias -> Result i w [N.Name]
209+checkAliasFreeVars :: Valid.Alias -> Result i w [Name.Name]
210checkAliasFreeVars (Valid.Alias aliasRegion (A.At _ name) args tipe) =
210checkAliasFreeVars (Valid.Alias aliasRegion (A.At _ name) args tipe) =
211 let
211 let
212 addArg (A.At region arg) dict =
212 addArg (A.At region arg) dict =
@@ -225,7 +225,7 @@ checkAliasFreeVars (Valid.Alias aliasRegion (A.At _ name) args tipe) =
225 (Map.toList (Map.difference freeVars boundVars))
225 (Map.toList (Map.difference freeVars boundVars))
226
226
227
227
228−addFreeVars :: Map.Map N.Name R.Region -> Src.Type -> Map.Map N.Name R.Region
228+addFreeVars :: Map.Map Name.Name R.Region -> Src.Type -> Map.Map Name.Name R.Region
229addFreeVars freeVars (A.At region tipe) =
229addFreeVars freeVars (A.At region tipe) =
230 case tipe of
230 case tipe of
231 Src.TLambda arg result ->
231 Src.TLambda arg result ->
@@ -290,7 +290,7 @@ type CtorDups = Dups.Dict (Map.Map ModuleName.Canonical Env.Ctor)
290-- CANONICALIZE ALIAS
290-- CANONICALIZE ALIAS
291
291
292
292
293−canonicalizeAlias :: Env.Env -> Valid.Alias -> Result i w ( (N.Name, Can.Alias), CtorDups )
293+canonicalizeAlias :: Env.Env -> Valid.Alias -> Result i w ( (Name.Name, Can.Alias), CtorDups )
294canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias _ (A.At region name) args tipe) =
294canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias _ (A.At region name) args tipe) =
295 do let vars = map A.toValue args
295 do let vars = map A.toValue args
296 ctipe <- Type.canonicalize env tipe
296 ctipe <- Type.canonicalize env tipe
@@ -305,7 +305,7 @@ canonicalizeAlias env@(Env.Env home _ _ _ _ _ _ _) (Valid.Alias _ (A.At region n
305 Dups.none
305 Dups.none
306 )
306 )
307
307
308−toRecordCtor :: ModuleName.Canonical -> N.Name -> [N.Name] -> Map.Map N.Name Can.FieldType -> Env.Ctor
308+toRecordCtor :: ModuleName.Canonical -> Name.Name -> [Name.Name] -> Map.Map Name.Name Can.FieldType -> Env.Ctor
309toRecordCtor home name vars fields =
309toRecordCtor home name vars fields =
310 let
310 let
311 avars = map (\var -> (var, Can.TVar var)) vars
311 avars = map (\var -> (var, Can.TVar var)) vars
@@ -322,7 +322,7 @@ toRecordCtor home name vars fields =
322-- CANONICALIZE UNION
322-- CANONICALIZE UNION
323
323
324
324
325−canonicalizeUnion :: Env.Env -> Valid.Union -> Result i w ( (N.Name, Can.Union), CtorDups )
325+canonicalizeUnion :: Env.Env -> Valid.Union -> Result i w ( (Name.Name, Can.Union), CtorDups )
326canonicalizeUnion env@(Env.Env home _ _ _ _ _ _ _) (Valid.Union _ (A.At _ name) avars ctors) =
326canonicalizeUnion env@(Env.Env home _ _ _ _ _ _ _) (Valid.Union _ (A.At _ name) avars ctors) =
327 do cctors <- Index.indexedTraverse (canonicalizeCtor env) ctors
327 do cctors <- Index.indexedTraverse (canonicalizeCtor env) ctors
328 let vars = map A.toValue avars
328 let vars = map A.toValue avars
@@ -334,14 +334,14 @@ canonicalizeUnion env@(Env.Env home _ _ _ _ _ _ _) (Valid.Union _ (A.At _ name)
334 )
334 )
335
335
336
336
337−canonicalizeCtor :: Env.Env -> Index.ZeroBased -> (A.Located N.Name, [Src.Type]) -> Result i w (A.Located Can.Ctor)
337+canonicalizeCtor :: Env.Env -> Index.ZeroBased -> (A.Located Name.Name, [Src.Type]) -> Result i w (A.Located Can.Ctor)
338canonicalizeCtor env index (A.At region ctor, tipes) =
338canonicalizeCtor env index (A.At region ctor, tipes) =
339 do ctipes <- traverse (Type.canonicalize env) tipes
339 do ctipes <- traverse (Type.canonicalize env) tipes
340 Result.ok $ A.At region $
340 Result.ok $ A.At region $
341 Can.Ctor ctor index (length ctipes) ctipes
341 Can.Ctor ctor index (length ctipes) ctipes
342
342
343
343
344−toOpts :: [(A.Located N.Name, [Src.Type])] -> Can.CtorOpts
344+toOpts :: [(A.Located Name.Name, [Src.Type])] -> Can.CtorOpts
345toOpts ctors =
345toOpts ctors =
346 case ctors of
346 case ctors of
347 [ (_,[_]) ] ->
347 [ (_,[_]) ] ->
@@ -351,7 +351,7 @@ toOpts ctors =
351 if all (null . snd) ctors then Can.Enum else Can.Normal
351 if all (null . snd) ctors then Can.Enum else Can.Normal
352
352
353
353
354−toCtor :: ModuleName.Canonical -> N.Name -> Can.Union -> A.Located Can.Ctor -> CtorDups
354+toCtor :: ModuleName.Canonical -> Name.Name -> Can.Union -> A.Located Can.Ctor -> CtorDups
355toCtor home typeName union (A.At region (Can.Ctor name index _ args)) =
355toCtor home typeName union (A.At region (Can.Ctor name index _ args)) =
356 Dups.one name region $ Map.singleton home $
356 Dups.one name region $ Map.singleton home $
357 Env.Ctor home typeName union index args
357 Env.Ctor home typeName union index args
compiler/src/Canonicalize/Expression.hs+19−19
@@ -15,6 +15,7 @@ import qualified Data.Graph as Graph
15import qualified Data.List as List
15import qualified Data.List as List
16import qualified Data.Map.Strict as Map
16import qualified Data.Map.Strict as Map
17import qualified Data.Map.Strict.Internal as I
17import qualified Data.Map.Strict.Internal as I
18+import qualified Data.Name as Name
18
19
19import qualified AST.Canonical as Can
20import qualified AST.Canonical as Can
20import qualified AST.Source as Src
21import qualified AST.Source as Src
@@ -27,7 +28,6 @@ import qualified Canonicalize.Environment.Dups as Dups
27import qualified Canonicalize.Pattern as Pattern
28import qualified Canonicalize.Pattern as Pattern
28import qualified Canonicalize.Type as Type
29import qualified Canonicalize.Type as Type
29import qualified Data.Index as Index
30import qualified Data.Index as Index
30−import qualified Elm.Name as N
31import qualified Elm.Package as Pkg
31import qualified Elm.Package as Pkg
32import qualified Reporting.Annotation as A
32import qualified Reporting.Annotation as A
33import qualified Reporting.Error.Canonicalize as Error
33import qualified Reporting.Error.Canonicalize as Error
@@ -45,7 +45,7 @@ type Result i w a =
45
45
46
46
47type FreeLocals =
47type FreeLocals =
48− Map.Map N.Name Uses
48+ Map.Map Name.Name Uses
49
49
50
50
51data Uses =
51data Uses =
@@ -214,7 +214,7 @@ canonicalizeCaseBranch env (pattern, expr) =
214-- CANONICALIZE BINOPS
214-- CANONICALIZE BINOPS
215
215
216
216
217−canonicalizeBinops :: R.Region -> Env.Env -> [(Valid.Expr, A.Located N.Name)] -> Valid.Expr -> Result FreeLocals [W.Warning] Can.Expr
217+canonicalizeBinops :: R.Region -> Env.Env -> [(Valid.Expr, A.Located Name.Name)] -> Valid.Expr -> Result FreeLocals [W.Warning] Can.Expr
218canonicalizeBinops overallRegion env ops final =
218canonicalizeBinops overallRegion env ops final =
219 let
219 let
220 canonicalizeHelp (expr, A.At region op) =
220 canonicalizeHelp (expr, A.At region op) =
@@ -379,12 +379,12 @@ addBindingsHelp bindings (A.At region pattern) =
379
379
380
380
381type Node =
381type Node =
382− (Binding, N.Name, [N.Name])
382+ (Binding, Name.Name, [Name.Name])
383
383
384
384
385data Binding
385data Binding
386 = Define Can.Def
386 = Define Can.Def
387− | Edge (A.Located N.Name)
387+ | Edge (A.Located Name.Name)
388 | Destruct Can.Pattern Can.Expr
388 | Destruct Can.Pattern Can.Expr
389
389
390
390
@@ -439,7 +439,7 @@ addDefNodes env nodes def =
439 (\freeLocals warnings cbody ->
439 (\freeLocals warnings cbody ->
440 let
440 let
441 names = getPatternNames [] pattern
441 names = getPatternNames [] pattern
442− name = N.toCompositeName (map A.toValue names)
442+ name = Name.fromManyNames (map A.toValue names)
443 node = ( Destruct cpattern cbody, name, Map.keys freeLocals )
443 node = ( Destruct cpattern cbody, name, Map.keys freeLocals )
444 in
444 in
445 good
445 good
@@ -462,12 +462,12 @@ logLetLocals args letLocals value =
462 value
462 value
463
463
464
464
465−addEdge :: [N.Name] -> [Node] -> A.Located N.Name -> [Node]
465+addEdge :: [Name.Name] -> [Node] -> A.Located Name.Name -> [Node]
466addEdge edges nodes aname@(A.At _ name) =
466addEdge edges nodes aname@(A.At _ name) =
467 (Edge aname, name, edges) : nodes
467 (Edge aname, name, edges) : nodes
468
468
469
469
470−getPatternNames :: [A.Located N.Name] -> Src.Pattern -> [A.Located N.Name]
470+getPatternNames :: [A.Located Name.Name] -> Src.Pattern -> [A.Located Name.Name]
471getPatternNames names (A.At region pattern) =
471getPatternNames names (A.At region pattern) =
472 case pattern of
472 case pattern of
473 Src.PAnything -> names
473 Src.PAnything -> names
@@ -491,7 +491,7 @@ getPatternNames names (A.At region pattern) =
491
491
492gatherTypedArgs
492gatherTypedArgs
493 :: Env.Env
493 :: Env.Env
494− -> N.Name
494+ -> Name.Name
495 -> [Src.Pattern]
495 -> [Src.Pattern]
496 -> Can.Type
496 -> Can.Type
497 -> Index.ZeroBased
497 -> Index.ZeroBased
@@ -575,7 +575,7 @@ checkCycle bindings defs =
575 checkCycle otherBindings defs
575 checkCycle otherBindings defs
576
576
577
577
578−toNames :: [Binding] -> [Can.Def] -> [N.Name]
578+toNames :: [Binding] -> [Can.Def] -> [Name.Name]
579toNames bindings revDefs =
579toNames bindings revDefs =
580 case bindings of
580 case bindings of
581 [] ->
581 [] ->
@@ -588,7 +588,7 @@ toNames bindings revDefs =
588 Destruct _ _ -> toNames otherBindings revDefs
588 Destruct _ _ -> toNames otherBindings revDefs
589
589
590
590
591−getDefName :: Can.Def -> N.Name
591+getDefName :: Can.Def -> Name.Name
592getDefName def =
592getDefName def =
593 case def of
593 case def of
594 Can.Def (A.At _ name) _ _ ->
594 Can.Def (A.At _ name) _ _ ->
@@ -602,7 +602,7 @@ getDefName def =
602-- LOG VARIABLE USES
602-- LOG VARIABLE USES
603
603
604
604
605−logVar :: N.Name -> a -> Result FreeLocals w a
605+logVar :: Name.Name -> a -> Result FreeLocals w a
606logVar name value =
606logVar name value =
607 Result.Result $ \freeLocals warnings _ good ->
607 Result.Result $ \freeLocals warnings _ good ->
608 good (Map.insertWith combineUses name oneDirectUse freeLocals) warnings value
608 good (Map.insertWith combineUses name oneDirectUse freeLocals) warnings value
@@ -657,7 +657,7 @@ verifyBindings context bindings (Result.Result k) =
657 )
657 )
658
658
659
659
660−addUnusedWarning :: W.Context -> [W.Warning] -> N.Name -> R.Region -> [W.Warning]
660+addUnusedWarning :: W.Context -> [W.Warning] -> Name.Name -> R.Region -> [W.Warning]
661addUnusedWarning context warnings name region =
661addUnusedWarning context warnings name region =
662 W.UnusedVariable region context name : warnings
662 W.UnusedVariable region context name : warnings
663
663
@@ -687,7 +687,7 @@ delayedUsage (Result.Result k) =
687-- FIND VARIABLE
687-- FIND VARIABLE
688
688
689
689
690−findVar :: R.Region -> Env.Env -> N.Name -> Result FreeLocals w Can.Expr_
690+findVar :: R.Region -> Env.Env -> Name.Name -> Result FreeLocals w Can.Expr_
691findVar region (Env.Env localHome vs _ _ _ qvs _ _) name =
691findVar region (Env.Env localHome vs _ _ _ qvs _ _) name =
692 case Map.lookup name vs of
692 case Map.lookup name vs of
693 Just var ->
693 Just var ->
@@ -712,7 +712,7 @@ findVar region (Env.Env localHome vs _ _ _ qvs _ _) name =
712 Result.throw (Error.NotFoundVar region Nothing name (toPossibleNames vs qvs))
712 Result.throw (Error.NotFoundVar region Nothing name (toPossibleNames vs qvs))
713
713
714
714
715−findVarQual :: R.Region -> Env.Env -> N.Name -> N.Name -> Result FreeLocals w Can.Expr_
715+findVarQual :: R.Region -> Env.Env -> Name.Name -> Name.Name -> Result FreeLocals w Can.Expr_
716findVarQual region (Env.Env localHome vs _ _ _ qvs _ _) prefix name =
716findVarQual region (Env.Env localHome vs _ _ _ qvs _ _) prefix name =
717 case Map.lookup prefix qvs of
717 case Map.lookup prefix qvs of
718 Just qualified ->
718 Just qualified ->
@@ -731,13 +731,13 @@ findVarQual region (Env.Env localHome vs _ _ _ qvs _ _) prefix name =
731 Result.throw (Error.NotFoundVar region (Just prefix) name (toPossibleNames vs qvs))
731 Result.throw (Error.NotFoundVar region (Just prefix) name (toPossibleNames vs qvs))
732
732
733 Nothing ->
733 Nothing ->
734− if ModuleName.isKernel prefix && Pkg.isKernel (ModuleName._package localHome) then
734+ if Name.isKernel prefix && Pkg.isKernel (ModuleName._package localHome) then
735− Result.ok $ Can.VarKernel (ModuleName.getKernel prefix) name
735+ Result.ok $ Can.VarKernel (Name.getKernel prefix) name
736 else
736 else
737 Result.throw (Error.NotFoundVar region (Just prefix) name (toPossibleNames vs qvs))
737 Result.throw (Error.NotFoundVar region (Just prefix) name (toPossibleNames vs qvs))
738
738
739
739
740−toPossibleNames :: Map.Map N.Name Env.Var -> Env.Qualified Can.Annotation -> Error.PossibleNames
740+toPossibleNames :: Map.Map Name.Name Env.Var -> Env.Qualified Can.Annotation -> Error.PossibleNames
741toPossibleNames exposed qualified =
741toPossibleNames exposed qualified =
742 Error.PossibleNames (Map.keysSet exposed) (Map.map Map.keysSet qualified)
742 Error.PossibleNames (Map.keysSet exposed) (Map.map Map.keysSet qualified)
743
743
@@ -746,7 +746,7 @@ toPossibleNames exposed qualified =
746-- FIND CTOR
746-- FIND CTOR
747
747
748
748
749−toVarCtor :: N.Name -> Env.Ctor -> Can.Expr_
749+toVarCtor :: Name.Name -> Env.Ctor -> Can.Expr_
750toVarCtor name ctor =
750toVarCtor name ctor =
751 case ctor of
751 case ctor of
752 Env.Ctor home typeName (Can.Union vars _ _ opts) index args ->
752 Env.Ctor home typeName (Can.Union vars _ _ opts) index args ->
compiler/src/Canonicalize/Module.hs+17−17
@@ -7,6 +7,7 @@ module Canonicalize.Module
7
7
8import qualified Data.Graph as Graph
8import qualified Data.Graph as Graph
9import qualified Data.Map as Map
9import qualified Data.Map as Map
10+import qualified Data.Name as Name
10
11
11import qualified AST.Canonical as Can
12import qualified AST.Canonical as Can
12import qualified AST.Source as Src
13import qualified AST.Source as Src
@@ -22,7 +23,6 @@ import qualified Canonicalize.Pattern as Pattern
22import qualified Canonicalize.Type as Type
23import qualified Canonicalize.Type as Type
23import qualified Data.Index as Index
24import qualified Data.Index as Index
24import qualified Elm.Interface as I
25import qualified Elm.Interface as I
25−import qualified Elm.Name as N
26import qualified Elm.Package as Pkg
26import qualified Elm.Package as Pkg
27import qualified Reporting.Annotation as A
27import qualified Reporting.Annotation as A
28import qualified Reporting.Error.Canonicalize as Error
28import qualified Reporting.Error.Canonicalize as Error
@@ -45,7 +45,7 @@ type Result i w a =
45
45
46canonicalize
46canonicalize
47 :: Pkg.Name
47 :: Pkg.Name
48− -> Map.Map N.Name ModuleName.Canonical
48+ -> Map.Map Name.Name ModuleName.Canonical
49 -> I.Interfaces
49 -> I.Interfaces
50 -> Valid.Module
50 -> Valid.Module
51 -> Result i [W.Warning] Can.Module
51 -> Result i [W.Warning] Can.Module
@@ -82,7 +82,7 @@ toDocs (Valid.Module _ docs comments _ _ _ _ _ _ _) =
82-- CANONICALIZE BINOP
82-- CANONICALIZE BINOP
83
83
84
84
85−canonicalizeBinop :: Valid.Binop -> ( N.Name, Can.Binop )
85+canonicalizeBinop :: Valid.Binop -> ( Name.Name, Can.Binop )
86canonicalizeBinop (Valid.Binop op associativity precedence func) =
86canonicalizeBinop (Valid.Binop op associativity precedence func) =
87 ( op, Can.Binop_ associativity precedence func )
87 ( op, Can.Binop_ associativity precedence func )
88
88
@@ -142,13 +142,13 @@ detectBadCycles scc =
142-- Phase one nodes track ALL dependencies.
142-- Phase one nodes track ALL dependencies.
143-- This allows us to find cyclic values for type inference.
143-- This allows us to find cyclic values for type inference.
144type NodeOne =
144type NodeOne =
145− (NodeTwo, N.Name, [N.Name])
145+ (NodeTwo, Name.Name, [Name.Name])
146
146
147
147
148-- Phase two nodes track DIRECT dependencies.
148-- Phase two nodes track DIRECT dependencies.
149-- This allows us to detect cycles that definitely do not terminate.
149-- This allows us to detect cycles that definitely do not terminate.
150type NodeTwo =
150type NodeTwo =
151− (Can.Def, N.Name, [N.Name])
151+ (Can.Def, Name.Name, [Name.Name])
152
152
153
153
154toNodeOne :: Env.Env -> A.Located Valid.Decl -> Result i [W.Warning] NodeOne
154toNodeOne :: Env.Env -> A.Located Valid.Decl -> Result i [W.Warning] NodeOne
@@ -193,7 +193,7 @@ toNodeOne env (A.At _ (Valid.Decl aname@(A.At _ name) srcArgs body maybeType)) =
193 )
193 )
194
194
195
195
196−toNodeTwo :: N.Name -> [arg] -> Can.Def -> Expr.FreeLocals -> NodeTwo
196+toNodeTwo :: Name.Name -> [arg] -> Can.Def -> Expr.FreeLocals -> NodeTwo
197toNodeTwo name args def freeLocals =
197toNodeTwo name args def freeLocals =
198 case args of
198 case args of
199 [] ->
199 [] ->
@@ -203,7 +203,7 @@ toNodeTwo name args def freeLocals =
203 (def, name, [])
203 (def, name, [])
204
204
205
205
206−addDirects :: N.Name -> Expr.Uses -> [N.Name] -> [N.Name]
206+addDirects :: Name.Name -> Expr.Uses -> [Name.Name] -> [Name.Name]
207addDirects name (Expr.Uses directUses _) directDeps =
207addDirects name (Expr.Uses directUses _) directDeps =
208 if directUses > 0 then
208 if directUses > 0 then
209 name:directDeps
209 name:directDeps
@@ -217,9 +217,9 @@ addDirects name (Expr.Uses directUses _) directDeps =
217
217
218canonicalizeExports
218canonicalizeExports
219 :: [A.Located Valid.Decl]
219 :: [A.Located Valid.Decl]
220− -> Map.Map N.Name union
220+ -> Map.Map Name.Name union
221− -> Map.Map N.Name alias
221+ -> Map.Map Name.Name alias
222− -> Map.Map N.Name binop
222+ -> Map.Map Name.Name binop
223 -> Can.Effects
223 -> Can.Effects
224 -> A.Located Src.Exposing
224 -> A.Located Src.Exposing
225 -> Result i w Can.Exports
225 -> Result i w Can.Exports
@@ -234,16 +234,16 @@ canonicalizeExports decls unions aliases binops effects (A.At region exposing) =
234 Can.Export <$> Dups.detect Error.ExportDuplicate (Dups.unions infos)
234 Can.Export <$> Dups.detect Error.ExportDuplicate (Dups.unions infos)
235
235
236
236
237−declToName :: A.Located Valid.Decl -> ( N.Name, () )
237+declToName :: A.Located Valid.Decl -> ( Name.Name, () )
238declToName (A.At _ (Valid.Decl (A.At _ name) _ _ _)) =
238declToName (A.At _ (Valid.Decl (A.At _ name) _ _ _)) =
239 ( name, () )
239 ( name, () )
240
240
241
241
242checkExposed
242checkExposed
243− :: Map.Map N.Name decl
243+ :: Map.Map Name.Name decl
244− -> Map.Map N.Name union
244+ -> Map.Map Name.Name union
245− -> Map.Map N.Name alias
245+ -> Map.Map Name.Name alias
246− -> Map.Map N.Name binop
246+ -> Map.Map Name.Name binop
247 -> Can.Effects
247 -> Can.Effects
248 -> A.Located Src.Exposed
248 -> A.Located Src.Exposed
249 -> Result i w (Dups.Dict (A.Located Can.Export))
249 -> Result i w (Dups.Dict (A.Located Can.Export))
@@ -287,7 +287,7 @@ checkExposed decls unions aliases binops effects (A.At region exposed) =
287 Map.keys unions ++ Map.keys aliases
287 Map.keys unions ++ Map.keys aliases
288
288
289
289
290−checkPorts :: Can.Effects -> N.Name -> Maybe [N.Name]
290+checkPorts :: Can.Effects -> Name.Name -> Maybe [Name.Name]
291checkPorts effects name =
291checkPorts effects name =
292 case effects of
292 case effects of
293 Can.NoEffects ->
293 Can.NoEffects ->
@@ -300,6 +300,6 @@ checkPorts effects name =
300 Just []
300 Just []
301
301
302
302
303−ok :: N.Name -> R.Region -> Can.Export -> Result i w (Dups.Dict (A.Located Can.Export))
303+ok :: Name.Name -> R.Region -> Can.Export -> Result i w (Dups.Dict (A.Located Can.Export))
304ok name region export =
304ok name region export =
305 Result.ok $ Dups.one name region (A.At region export)
305 Result.ok $ Dups.one name region (A.At region export)
compiler/src/Canonicalize/Pattern.hs+7−7
@@ -9,6 +9,7 @@ module Canonicalize.Pattern
9
9
10
10
11import qualified Data.Map.Strict as Map
11import qualified Data.Map.Strict as Map
12+import qualified Data.Name as Name
12
13
13import qualified AST.Canonical as Can
14import qualified AST.Canonical as Can
14import qualified AST.Module.Name as ModuleName
15import qualified AST.Module.Name as ModuleName
@@ -16,7 +17,6 @@ import qualified AST.Source as Src
16import qualified Canonicalize.Environment as Env
17import qualified Canonicalize.Environment as Env
17import qualified Canonicalize.Environment.Dups as Dups
18import qualified Canonicalize.Environment.Dups as Dups
18import qualified Data.Index as Index
19import qualified Data.Index as Index
19−import qualified Elm.Name as N
20import qualified Reporting.Annotation as A
20import qualified Reporting.Annotation as A
21import qualified Reporting.Error.Canonicalize as Error
21import qualified Reporting.Error.Canonicalize as Error
22import qualified Reporting.Region as R
22import qualified Reporting.Region as R
@@ -32,7 +32,7 @@ type Result i w a =
32
32
33
33
34type Bindings =
34type Bindings =
35− Map.Map N.Name R.Region
35+ Map.Map Name.Name R.Region
36
36
37
37
38
38
@@ -113,7 +113,7 @@ canonicalize env (A.At region pattern) =
113 Result.ok (Can.PInt int)
113 Result.ok (Can.PInt int)
114
114
115
115
116−canonicalizeCtor :: Env.Env -> R.Region -> N.Name -> [Src.Pattern] -> Env.Ctor -> Result DupsDict w Can.Pattern_
116+canonicalizeCtor :: Env.Env -> R.Region -> Name.Name -> [Src.Pattern] -> Env.Ctor -> Result DupsDict w Can.Pattern_
117canonicalizeCtor env region name patterns ctor =
117canonicalizeCtor env region name patterns ctor =
118 case ctor of
118 case ctor of
119 Env.Ctor home tipe union index args ->
119 Env.Ctor home tipe union index args ->
@@ -124,8 +124,8 @@ canonicalizeCtor env region name patterns ctor =
124 do verifiedList <- Index.indexedZipWithA toCanonicalArg patterns args
124 do verifiedList <- Index.indexedZipWithA toCanonicalArg patterns args
125 case verifiedList of
125 case verifiedList of
126 Index.LengthMatch cargs ->
126 Index.LengthMatch cargs ->
127− if tipe == N.bool && home == ModuleName.basics then
127+ if tipe == Name.bool && home == ModuleName.basics then
128− Result.ok (Can.PBool union (name == N.true))
128+ Result.ok (Can.PBool union (name == Name.true))
129 else
129 else
130 Result.ok (Can.PCtor home tipe union name index cargs)
130 Result.ok (Can.PCtor home tipe union name index cargs)
131
131
@@ -165,13 +165,13 @@ canonicalizeList env list =
165-- LOG BINDINGS
165-- LOG BINDINGS
166
166
167
167
168−logVar :: N.Name -> R.Region -> a -> Result DupsDict w a
168+logVar :: Name.Name -> R.Region -> a -> Result DupsDict w a
169logVar name region value =
169logVar name region value =
170 Result.Result $ \bindings warnings _ ok ->
170 Result.Result $ \bindings warnings _ ok ->
171 ok (Dups.insert name region region bindings) warnings value
171 ok (Dups.insert name region region bindings) warnings value
172
172
173
173
174−logFields :: [A.Located N.Name] -> a -> Result DupsDict w a
174+logFields :: [A.Located Name.Name] -> a -> Result DupsDict w a
175logFields fields value =
175logFields fields value =
176 let
176 let
177 addField (A.At region name) dict =
177 addField (A.At region name) dict =
compiler/src/Canonicalize/Type.hs+6−6
@@ -9,12 +9,12 @@ module Canonicalize.Type
9
9
10import qualified Data.List as List
10import qualified Data.List as List
11import qualified Data.Map as Map
11import qualified Data.Map as Map
12+import qualified Data.Name as Name
12
13
13import qualified AST.Canonical as Can
14import qualified AST.Canonical as Can
14import qualified AST.Source as Src
15import qualified AST.Source as Src
15import qualified Canonicalize.Environment as Env
16import qualified Canonicalize.Environment as Env
16import qualified Canonicalize.Environment.Dups as Dups
17import qualified Canonicalize.Environment.Dups as Dups
17−import qualified Elm.Name as N
18import qualified Reporting.Annotation as A
18import qualified Reporting.Annotation as A
19import qualified Reporting.Error.Canonicalize as Error
19import qualified Reporting.Error.Canonicalize as Error
20import qualified Reporting.Region as R
20import qualified Reporting.Region as R
@@ -85,7 +85,7 @@ canonicalize env (A.At typeRegion tipe) =
85 Result.throw $ Error.TupleLargerThanThree typeRegion
85 Result.throw $ Error.TupleLargerThanThree typeRegion
86
86
87
87
88−canonicalizeFields :: Env.Env -> [(A.Located N.Name, Src.Type)] -> [(A.Located N.Name, Result i w Can.FieldType)]
88+canonicalizeFields :: Env.Env -> [(A.Located Name.Name, Src.Type)] -> [(A.Located Name.Name, Result i w Can.FieldType)]
89canonicalizeFields env fields =
89canonicalizeFields env fields =
90 let
90 let
91 len = fromIntegral (length fields)
91 len = fromIntegral (length fields)
@@ -99,7 +99,7 @@ canonicalizeFields env fields =
99-- CANONICALIZE TYPE
99-- CANONICALIZE TYPE
100
100
101
101
102−canonicalizeType :: Env.Env -> R.Region -> N.Name -> [Src.Type] -> Env.Type -> Result i w Can.Type
102+canonicalizeType :: Env.Env -> R.Region -> Name.Name -> [Src.Type] -> Env.Type -> Result i w Can.Type
103canonicalizeType env region name args info =
103canonicalizeType env region name args info =
104 do cargs <- traverse (canonicalize env) args
104 do cargs <- traverse (canonicalize env) args
105 case info of
105 case info of
@@ -112,7 +112,7 @@ canonicalizeType env region name args info =
112 Can.TType home name cargs
112 Can.TType home name cargs
113
113
114
114
115−checkArity :: Int -> R.Region -> N.Name -> [A.Located arg] -> answer -> Result i w answer
115+checkArity :: Int -> R.Region -> Name.Name -> [A.Located arg] -> answer -> Result i w answer
116checkArity expected region name args answer =
116checkArity expected region name args answer =
117 let actual = length args in
117 let actual = length args in
118 if expected == actual then
118 if expected == actual then
@@ -125,7 +125,7 @@ checkArity expected region name args answer =
125-- ADD FREE VARS
125-- ADD FREE VARS
126
126
127
127
128−addFreeVars :: Map.Map N.Name () -> Can.Type -> Map.Map N.Name ()
128+addFreeVars :: Map.Map Name.Name () -> Can.Type -> Map.Map Name.Name ()
129addFreeVars freeVars tipe =
129addFreeVars freeVars tipe =
130 case tipe of
130 case tipe of
131 Can.TLambda arg result ->
131 Can.TLambda arg result ->
@@ -158,6 +158,6 @@ addFreeVars freeVars tipe =
158 List.foldl' (\fvs (_,arg) -> addFreeVars fvs arg) freeVars args
158 List.foldl' (\fvs (_,arg) -> addFreeVars fvs arg) freeVars args
159
159
160
160
161−addFieldFreeVars :: Map.Map N.Name () -> Can.FieldType -> Map.Map N.Name ()
161+addFieldFreeVars :: Map.Map Name.Name () -> Can.FieldType -> Map.Map Name.Name ()
162addFieldFreeVars freeVars (Can.FieldType _ tipe) =
162addFieldFreeVars freeVars (Can.FieldType _ tipe) =
163 addFreeVars freeVars tipe
163 addFreeVars freeVars tipe