@@ -10,6 +10,7 @@ import Prelude hiding (cycle)
10import Control.Monad (foldM)
10import Control.Monad (foldM)
11import qualified Data.List as List
11import qualified Data.List as List
12import qualified Data.Map as Map
12import qualified Data.Map as Map
13+import qualified Data.Name as Name
13import qualified Data.Set as Set
14import qualified Data.Set as Set
14import Data.Map ((!))
15import Data.Map ((!))
@@ -18,7 +19,6 @@ import qualified AST.Optimized as Opt
18import qualified AST.Module.Name as ModuleName
19import qualified AST.Module.Name as ModuleName
19import qualified AST.Utils.Type as Type
20import qualified AST.Utils.Type as Type
20import qualified Canonicalize.Effects as Effects
21import qualified Canonicalize.Effects as Effects
21−import qualified Elm.Name as N
22import qualified Optimize.Expression as Expr
22import qualified Optimize.Expression as Expr
23import qualified Optimize.Names as Names
23import qualified Optimize.Names as Names
24import qualified Optimize.Port as Port
24import qualified Optimize.Port as Port
@@ -38,7 +38,7 @@ type Result i w a =
40type Annotations =
40type Annotations =
41− Map.Map N.Name Can.Annotation
41+ Map.Map Name.Name Can.Annotation
44optimize :: Annotations -> Can.Module -> Result i [W.Warning] Opt.Graph
44optimize :: Annotations -> Can.Module -> Result i [W.Warning] Opt.Graph
@@ -58,7 +58,7 @@ type Nodes =
58 Map.Map Opt.Global Opt.Node
58 Map.Map Opt.Global Opt.Node
61−addUnions :: ModuleName.Canonical -> Map.Map N.Name Can.Union -> Opt.Graph -> Opt.Graph
61+addUnions :: ModuleName.Canonical -> Map.Map Name.Name Can.Union -> Opt.Graph -> Opt.Graph
62addUnions home unions (Opt.Graph mains nodes fields) =
62addUnions home unions (Opt.Graph mains nodes fields) =
63 Opt.Graph mains (Map.foldr (addUnion home) nodes unions) fields
63 Opt.Graph mains (Map.foldr (addUnion home) nodes unions) fields
@@ -84,12 +84,12 @@ addCtorNode home opts nodes (Can.Ctor name index numArgs _) =
87−addAliases :: ModuleName.Canonical -> Map.Map N.Name Can.Alias -> Opt.Graph -> Opt.Graph
87+addAliases :: ModuleName.Canonical -> Map.Map Name.Name Can.Alias -> Opt.Graph -> Opt.Graph
88addAliases home aliases graph =
88addAliases home aliases graph =
89 Map.foldrWithKey (addAlias home) graph aliases
89 Map.foldrWithKey (addAlias home) graph aliases
92−addAlias :: ModuleName.Canonical -> N.Name -> Can.Alias -> Opt.Graph -> Opt.Graph
92+addAlias :: ModuleName.Canonical -> Name.Name -> Can.Alias -> Opt.Graph -> Opt.Graph
93addAlias home name (Can.Alias _ tipe) graph@(Opt.Graph mains nodes fieldCounts) =
93addAlias home name (Can.Alias _ tipe) graph@(Opt.Graph mains nodes fieldCounts) =
94 case tipe of
94 case tipe of
95 Can.TRecord fields Nothing ->
95 Can.TRecord fields Nothing ->
@@ -110,7 +110,7 @@ addAlias home name (Can.Alias _ tipe) graph@(Opt.Graph mains nodes fieldCounts)
113−addRecordCtorField :: N.Name -> Can.FieldType -> Map.Map N.Name Int -> Map.Map N.Name Int
113+addRecordCtorField :: Name.Name -> Can.FieldType -> Map.Map Name.Name Int -> Map.Map Name.Name Int
114addRecordCtorField name _ fields =
114addRecordCtorField name _ fields =
115 Map.insertWith (+) name 1 fields
115 Map.insertWith (+) name 1 fields
@@ -152,7 +152,7 @@ addEffects home effects graph@(Opt.Graph mains nodes fields) =
152 Opt.Graph mains newNodes fields
152 Opt.Graph mains newNodes fields
155−addPort :: ModuleName.Canonical -> N.Name -> Can.Port -> Opt.Graph -> Opt.Graph
155+addPort :: ModuleName.Canonical -> Name.Name -> Can.Port -> Opt.Graph -> Opt.Graph
156addPort home name port_ graph =
156addPort home name port_ graph =
157 case port_ of
157 case port_ of
158 Can.Incoming _ payloadType _ ->
158 Can.Incoming _ payloadType _ ->
@@ -174,7 +174,7 @@ addPort home name port_ graph =
177−addToGraph :: Opt.Global -> Opt.Node -> Map.Map N.Name Int -> Opt.Graph -> Opt.Graph
177+addToGraph :: Opt.Global -> Opt.Node -> Map.Map Name.Name Int -> Opt.Graph -> Opt.Graph
178addToGraph name node fields (Opt.Graph mains nodes fieldCounts) =
178addToGraph name node fields (Opt.Graph mains nodes fieldCounts) =
179 Opt.Graph
179 Opt.Graph
@@ -213,13 +213,13 @@ findMain defs =
213 def:rest ->
213 def:rest ->
214 case def of
214 case def of
215 Can.Def (A.At region name) _ _ ->
215 Can.Def (A.At region name) _ _ ->
216− if name == N.main then Just region else findMain rest
216+ if name == Name.main then Just region else findMain rest
218 Can.TypedDef (A.At region name) _ _ _ _ ->
218 Can.TypedDef (A.At region name) _ _ _ _ ->
219− if name == N.main then Just region else findMain rest
219+ if name == Name.main then Just region else findMain rest
222−defToName :: Can.Def -> N.Name
222+defToName :: Can.Def -> Name.Name
223defToName def =
223defToName def =
224 case def of
224 case def of
225 Can.Def (A.At _ name) _ _ -> name
225 Can.Def (A.At _ name) _ _ -> name
@@ -242,9 +242,9 @@ addDef home annotations def graph =
242 addDefHelp region annotations home name (map fst typedArgs) body graph
242 addDefHelp region annotations home name (map fst typedArgs) body graph
245−addDefHelp :: R.Region -> Annotations -> ModuleName.Canonical -> N.Name -> [Can.Pattern] -> Can.Expr -> Opt.Graph -> Result i w Opt.Graph
245+addDefHelp :: R.Region -> Annotations -> ModuleName.Canonical -> Name.Name -> [Can.Pattern] -> Can.Expr -> Opt.Graph -> Result i w Opt.Graph
246addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes fieldCounts) =
246addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes fieldCounts) =
247− if name /= N.main then
247+ if name /= Name.main then
248 Result.ok (addDefNode home name args body Set.empty graph)
248 Result.ok (addDefNode home name args body Set.empty graph)
@@ -259,11 +259,11 @@ addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes f
259 Opt.Graph newMains nodes newFields
259 Opt.Graph newMains nodes newFields
261 case Type.deepDealias tipe of
261 case Type.deepDealias tipe of
262− Can.TType hm nm [_] | hm == ModuleName.virtualDom && nm == N.node ->
262+ Can.TType hm nm [_] | hm == ModuleName.virtualDom && nm == Name.node ->
263 Result.ok $ addMain $ Names.run $
263 Result.ok $ addMain $ Names.run $
264− Names.registerKernel N.virtualDom Opt.Static
264+ Names.registerKernel Name.virtualDom Opt.Static
266− Can.TType hm nm [flags, _, message] | hm == ModuleName.platform && nm == N.program ->
266+ Can.TType hm nm [flags, _, message] | hm == ModuleName.platform && nm == Name.program ->
267 case Effects.checkPayload flags of
267 case Effects.checkPayload flags of
268 Right () ->
268 Right () ->
269 Result.ok $ addMain $ Names.run $
269 Result.ok $ addMain $ Names.run $
@@ -276,7 +276,7 @@ addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes f
276 Result.throw (E.BadType region tipe)
276 Result.throw (E.BadType region tipe)
279−addDefNode :: ModuleName.Canonical -> N.Name -> [Can.Pattern] -> Can.Expr -> Set.Set Opt.Global -> Opt.Graph -> Opt.Graph
279+addDefNode :: ModuleName.Canonical -> Name.Name -> [Can.Pattern] -> Can.Expr -> Set.Set Opt.Global -> Opt.Graph -> Opt.Graph
280addDefNode home name args body mainDeps graph =
280addDefNode home name args body mainDeps graph =
282 (deps, fields, def) =
282 (deps, fields, def) =
@@ -300,7 +300,7 @@ addDefNode home name args body mainDeps graph =
301data State =
301data State =
303− { _values :: [(N.Name, Opt.Expr)]
303+ { _values :: [(Name.Name, Opt.Expr)]
304 , _functions :: [Opt.Def]
304 , _functions :: [Opt.Def]
@@ -309,7 +309,7 @@ addRecDefs :: ModuleName.Canonical -> [Can.Def] -> Opt.Graph -> Opt.Graph
309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
311 names = reverse (map toName defs)
311 names = reverse (map toName defs)
312− cycleName = Opt.Global home (N.toCompositeName names)
312+ cycleName = Opt.Global home (Name.fromManyNames names)
313 cycle = foldr addValueName Set.empty defs
313 cycle = foldr addValueName Set.empty defs
314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
@@ -323,14 +323,14 @@ addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
323 (Map.unionWith (+) fields fieldCounts)
323 (Map.unionWith (+) fields fieldCounts)
326−toName :: Can.Def -> N.Name
326+toName :: Can.Def -> Name.Name
327toName def =
327toName def =
328 case def of
328 case def of
329 Can.Def (A.At _ name) _ _ -> name
329 Can.Def (A.At _ name) _ _ -> name
330 Can.TypedDef (A.At _ name) _ _ _ _ -> name
330 Can.TypedDef (A.At _ name) _ _ _ _ -> name
333−addValueName :: Can.Def -> Set.Set N.Name -> Set.Set N.Name
333+addValueName :: Can.Def -> Set.Set Name.Name -> Set.Set Name.Name
334addValueName def names =
334addValueName def names =
335 case def of
335 case def of
336 Can.Def (A.At _ name) args _ -> if null args then Set.insert name names else names
336 Can.Def (A.At _ name) args _ -> if null args then Set.insert name names else names
@@ -351,7 +351,7 @@ addLink home link def links =
351-- ADD RECURSIVE DEFS
351-- ADD RECURSIVE DEFS
354−addRecDef :: Set.Set N.Name -> State -> Can.Def -> Names.Tracker State
354+addRecDef :: Set.Set Name.Name -> State -> Can.Def -> Names.Tracker State
355addRecDef cycle state def =
355addRecDef cycle state def =
356 case def of
356 case def of
357 Can.Def (A.At _ name) args body ->
357 Can.Def (A.At _ name) args body ->
@@ -361,7 +361,7 @@ addRecDef cycle state def =
361 addRecDefHelp cycle state name (map fst args) body
361 addRecDefHelp cycle state name (map fst args) body
364−addRecDefHelp :: Set.Set N.Name -> State -> N.Name -> [Can.Pattern] -> Can.Expr -> Names.Tracker State
364+addRecDefHelp :: Set.Set Name.Name -> State -> Name.Name -> [Can.Pattern] -> Can.Expr -> Names.Tracker State
365addRecDefHelp cycle (State values funcs) name args body =
365addRecDefHelp cycle (State values funcs) name args body =
366 case args of
366 case args of