on master help sign in
Switch Optimize/ over to Data.Name
commit36b505f0cc5e5560b1cbeb6390c0956951e9e889 authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 19 Nov 2018, 12:44 (8 years ago) parent2f9afbe
6 files changed+92−92
compiler/src/Optimize/Case.hs+2−2 compiler/src/Optimize/DecisionTree.hs+2−2 compiler/src/Optimize/Expression.hs+14−14 compiler/src/Optimize/Module.hs+23−23 compiler/src/Optimize/Names.hs+17−17 compiler/src/Optimize/Port.hs+34−34
compiler/src/Optimize/Case.hs+2−2
@@ -9,10 +9,10 @@ import Control.Arrow (second)
99import qualified Data.Map as Map
1010import Data.Map ((!))
1111import qualified Data.Maybe as Maybe
12+import qualified Data.Name as Name
1213
1314import qualified AST.Canonical as Can
1415import qualified AST.Optimized as Opt
15−import qualified Elm.Name as N
1616import qualified Optimize.DecisionTree as DT
1717
1818
@@ -20,7 +20,7 @@ import qualified Optimize.DecisionTree as DT
2020-- OPTIMIZE A CASE EXPRESSION
2121
2222
23−optimize :: N.Name -> N.Name -> [(Can.Pattern, Opt.Expr)] -> Opt.Expr
23+optimize :: Name.Name -> Name.Name -> [(Can.Pattern, Opt.Expr)] -> Opt.Expr
2424optimize temp root optBranches =
2525 let
2626 (patterns, indexedBranches) =
compiler/src/Optimize/DecisionTree.hs+2−2
@@ -25,13 +25,13 @@ import Control.Monad (liftM, liftM2, liftM5)
2525import Data.Binary
2626import qualified Data.List as List
2727import qualified Data.Maybe as Maybe
28+import qualified Data.Name as Name
2829import qualified Data.Set as Set
2930import Data.Utf8 (Utf8)
3031
3132import qualified AST.Canonical as Can
3233import qualified AST.Module.Name as ModuleName
3334import qualified Data.Index as Index
34−import qualified Elm.Name as N
3535import qualified Reporting.Annotation as A
3636
3737
@@ -72,7 +72,7 @@ data DecisionTree
7272
7373
7474data Test
75− = IsCtor ModuleName.Canonical N.Name Index.ZeroBased Int Can.CtorOpts
75+ = IsCtor ModuleName.Canonical Name.Name Index.ZeroBased Int Can.CtorOpts
7676 | IsCons
7777 | IsNil
7878 | IsTuple
compiler/src/Optimize/Expression.hs+14−14
@@ -11,6 +11,7 @@ module Optimize.Expression
1111import Prelude hiding (cycle)
1212import Control.Monad (foldM)
1313import qualified Data.Map as Map
14+import qualified Data.Name as Name
1415import qualified Data.Set as Set
1516
1617import qualified AST.Canonical as Can
@@ -18,7 +19,6 @@ import qualified AST.Optimized as Opt
1819import qualified AST.Module.Name as ModuleName
1920import qualified AST.Utils.Shader as Shader
2021import qualified Data.Index as Index
21−import qualified Elm.Name as N
2222import qualified Optimize.Case as Case
2323import qualified Optimize.Names as Names
2424import qualified Reporting.Annotation as A
@@ -29,7 +29,7 @@ import qualified Reporting.Annotation as A
2929
3030
3131type Cycle =
32− Set.Set N.Name
32+ Set.Set Name.Name
3333
3434
3535optimize :: Cycle -> Can.Expr -> Names.Tracker Opt.Expr
@@ -60,7 +60,7 @@ optimize cycle (A.At region expression) =
6060 Names.registerGlobal home name
6161
6262 Can.Chr chr ->
63− Names.registerKernel N.utils (Opt.Chr chr)
63+ Names.registerKernel Name.utils (Opt.Chr chr)
6464
6565 Can.Str str ->
6666 pure (Opt.Str str)
@@ -72,11 +72,11 @@ optimize cycle (A.At region expression) =
7272 pure (Opt.Float float)
7373
7474 Can.List entries ->
75− Names.registerKernel N.list Opt.List
75+ Names.registerKernel Name.list Opt.List
7676 <*> traverse (optimize cycle) entries
7777
7878 Can.Negate expr ->
79− do func <- Names.registerGlobal ModuleName.basics N.negate
79+ do func <- Names.registerGlobal ModuleName.basics Name.negate
8080 arg <- optimize cycle expr
8181 pure $ Opt.Call func [arg]
8282
@@ -162,10 +162,10 @@ optimize cycle (A.At region expression) =
162162 <*> traverse (optimize cycle) fields
163163
164164 Can.Unit ->
165− Names.registerKernel N.utils Opt.Unit
165+ Names.registerKernel Name.utils Opt.Unit
166166
167167 Can.Tuple a b maybeC ->
168− Names.registerKernel N.utils Opt.Tuple
168+ Names.registerKernel Name.utils Opt.Tuple
169169 <*> optimize cycle a
170170 <*> optimize cycle b
171171 <*> traverse (optimize cycle) maybeC
@@ -197,7 +197,7 @@ optimizeDef cycle def body =
197197 optimizeDefHelp cycle name (map fst typedArgs) expr body
198198
199199
200−optimizeDefHelp :: Cycle -> N.Name -> [Can.Pattern] -> Can.Expr -> Opt.Expr -> Names.Tracker Opt.Expr
200+optimizeDefHelp :: Cycle -> Name.Name -> [Can.Pattern] -> Can.Expr -> Opt.Expr -> Names.Tracker Opt.Expr
201201optimizeDefHelp cycle name args expr body =
202202 do oexpr <- optimize cycle expr
203203 case args of
@@ -214,18 +214,18 @@ optimizeDefHelp cycle name args expr body =
214214-- DESTRUCTURING
215215
216216
217−destructArgs :: [Can.Pattern] -> Names.Tracker ([N.Name], [Opt.Destructor])
217+destructArgs :: [Can.Pattern] -> Names.Tracker ([Name.Name], [Opt.Destructor])
218218destructArgs args =
219219 do (argNames, destructorLists) <- unzip <$> traverse destruct args
220220 return (argNames, concat destructorLists)
221221
222222
223−destructCase :: N.Name -> Can.Pattern -> Names.Tracker [Opt.Destructor]
223+destructCase :: Name.Name -> Can.Pattern -> Names.Tracker [Opt.Destructor]
224224destructCase rootName pattern =
225225 reverse <$> destructHelp (Opt.Root rootName) pattern []
226226
227227
228−destruct :: Can.Pattern -> Names.Tracker (N.Name, [Opt.Destructor])
228+destruct :: Can.Pattern -> Names.Tracker (Name.Name, [Opt.Destructor])
229229destruct pattern@(A.At _ ptrn) =
230230 case ptrn of
231231 Can.PVar name ->
@@ -353,14 +353,14 @@ optimizePotentialTailCallDef cycle def =
353353 optimizePotentialTailCall cycle name (map fst typedArgs) expr
354354
355355
356−optimizePotentialTailCall :: Cycle -> N.Name -> [Can.Pattern] -> Can.Expr -> Names.Tracker Opt.Def
356+optimizePotentialTailCall :: Cycle -> Name.Name -> [Can.Pattern] -> Can.Expr -> Names.Tracker Opt.Def
357357optimizePotentialTailCall cycle name args expr =
358358 do (argNames, destructors) <- destructArgs args
359359 toTailDef name argNames destructors <$>
360360 optimizeTail cycle name argNames expr
361361
362362
363−optimizeTail :: Cycle -> N.Name -> [N.Name] -> Can.Expr -> Names.Tracker Opt.Expr
363+optimizeTail :: Cycle -> Name.Name -> [Name.Name] -> Can.Expr -> Names.Tracker Opt.Expr
364364optimizeTail cycle rootName argNames locExpr@(A.At _ expression) =
365365 case expression of
366366 Can.Call func args ->
@@ -442,7 +442,7 @@ optimizeTail cycle rootName argNames locExpr@(A.At _ expression) =
442442-- DETECT TAIL CALLS
443443
444444
445−toTailDef :: N.Name -> [N.Name] -> [Opt.Destructor] -> Opt.Expr -> Opt.Def
445+toTailDef :: Name.Name -> [Name.Name] -> [Opt.Destructor] -> Opt.Expr -> Opt.Def
446446toTailDef name argNames destructors body =
447447 if hasTailCall body then
448448 Opt.TailDef name argNames (foldr Opt.Destruct body destructors)
compiler/src/Optimize/Module.hs+23−23
@@ -10,6 +10,7 @@ import Prelude hiding (cycle)
1010import Control.Monad (foldM)
1111import qualified Data.List as List
1212import qualified Data.Map as Map
13+import qualified Data.Name as Name
1314import qualified Data.Set as Set
1415import Data.Map ((!))
1516
@@ -18,7 +19,6 @@ import qualified AST.Optimized as Opt
1819import qualified AST.Module.Name as ModuleName
1920import qualified AST.Utils.Type as Type
2021import qualified Canonicalize.Effects as Effects
21−import qualified Elm.Name as N
2222import qualified Optimize.Expression as Expr
2323import qualified Optimize.Names as Names
2424import qualified Optimize.Port as Port
@@ -38,7 +38,7 @@ type Result i w a =
3838
3939
4040type Annotations =
41− Map.Map N.Name Can.Annotation
41+ Map.Map Name.Name Can.Annotation
4242
4343
4444optimize :: Annotations -> Can.Module -> Result i [W.Warning] Opt.Graph
@@ -58,7 +58,7 @@ type Nodes =
5858 Map.Map Opt.Global Opt.Node
5959
6060
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
6262addUnions home unions (Opt.Graph mains nodes fields) =
6363 Opt.Graph mains (Map.foldr (addUnion home) nodes unions) fields
6464
@@ -84,12 +84,12 @@ addCtorNode home opts nodes (Can.Ctor name index numArgs _) =
8484-- ALIAS
8585
8686
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
8888addAliases home aliases graph =
8989 Map.foldrWithKey (addAlias home) graph aliases
9090
9191
92−addAlias :: ModuleName.Canonical -> N.Name -> Can.Alias -> Opt.Graph -> Opt.Graph
92+addAlias :: ModuleName.Canonical -> Name.Name -> Can.Alias -> Opt.Graph -> Opt.Graph
9393addAlias home name (Can.Alias _ tipe) graph@(Opt.Graph mains nodes fieldCounts) =
9494 case tipe of
9595 Can.TRecord fields Nothing ->
@@ -110,7 +110,7 @@ addAlias home name (Can.Alias _ tipe) graph@(Opt.Graph mains nodes fieldCounts)
110110 graph
111111
112112
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
114114addRecordCtorField name _ fields =
115115 Map.insertWith (+) name 1 fields
116116
@@ -152,7 +152,7 @@ addEffects home effects graph@(Opt.Graph mains nodes fields) =
152152 Opt.Graph mains newNodes fields
153153
154154
155−addPort :: ModuleName.Canonical -> N.Name -> Can.Port -> Opt.Graph -> Opt.Graph
155+addPort :: ModuleName.Canonical -> Name.Name -> Can.Port -> Opt.Graph -> Opt.Graph
156156addPort home name port_ graph =
157157 case port_ of
158158 Can.Incoming _ payloadType _ ->
@@ -174,7 +174,7 @@ addPort home name port_ graph =
174174-- HELPER
175175
176176
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
178178addToGraph name node fields (Opt.Graph mains nodes fieldCounts) =
179179 Opt.Graph
180180 mains
@@ -213,13 +213,13 @@ findMain defs =
213213 def:rest ->
214214 case def of
215215 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
217217
218218 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
220220
221221
222−defToName :: Can.Def -> N.Name
222+defToName :: Can.Def -> Name.Name
223223defToName def =
224224 case def of
225225 Can.Def (A.At _ name) _ _ -> name
@@ -242,9 +242,9 @@ addDef home annotations def graph =
242242 addDefHelp region annotations home name (map fst typedArgs) body graph
243243
244244
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
246246addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes fieldCounts) =
247− if name /= N.main then
247+ if name /= Name.main then
248248 Result.ok (addDefNode home name args body Set.empty graph)
249249 else
250250 let
@@ -259,11 +259,11 @@ addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes f
259259 Opt.Graph newMains nodes newFields
260260 in
261261 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 ->
263263 Result.ok $ addMain $ Names.run $
264− Names.registerKernel N.virtualDom Opt.Static
264+ Names.registerKernel Name.virtualDom Opt.Static
265265
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 ->
267267 case Effects.checkPayload flags of
268268 Right () ->
269269 Result.ok $ addMain $ Names.run $
@@ -276,7 +276,7 @@ addDefHelp region annotations home name args body graph@(Opt.Graph mains nodes f
276276 Result.throw (E.BadType region tipe)
277277
278278
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
280280addDefNode home name args body mainDeps graph =
281281 let
282282 (deps, fields, def) =
@@ -300,7 +300,7 @@ addDefNode home name args body mainDeps graph =
300300
301301data State =
302302 State
303− { _values :: [(N.Name, Opt.Expr)]
303+ { _values :: [(Name.Name, Opt.Expr)]
304304 , _functions :: [Opt.Def]
305305 }
306306
@@ -309,7 +309,7 @@ addRecDefs :: ModuleName.Canonical -> [Can.Def] -> Opt.Graph -> Opt.Graph
309309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
310310 let
311311 names = reverse (map toName defs)
312− cycleName = Opt.Global home (N.toCompositeName names)
312+ cycleName = Opt.Global home (Name.fromManyNames names)
313313 cycle = foldr addValueName Set.empty defs
314314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
315315
@@ -323,14 +323,14 @@ addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
323323 (Map.unionWith (+) fields fieldCounts)
324324
325325
326−toName :: Can.Def -> N.Name
326+toName :: Can.Def -> Name.Name
327327toName def =
328328 case def of
329329 Can.Def (A.At _ name) _ _ -> name
330330 Can.TypedDef (A.At _ name) _ _ _ _ -> name
331331
332332
333−addValueName :: Can.Def -> Set.Set N.Name -> Set.Set N.Name
333+addValueName :: Can.Def -> Set.Set Name.Name -> Set.Set Name.Name
334334addValueName def names =
335335 case def of
336336 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 =
351351-- ADD RECURSIVE DEFS
352352
353353
354−addRecDef :: Set.Set N.Name -> State -> Can.Def -> Names.Tracker State
354+addRecDef :: Set.Set Name.Name -> State -> Can.Def -> Names.Tracker State
355355addRecDef cycle state def =
356356 case def of
357357 Can.Def (A.At _ name) args body ->
@@ -361,7 +361,7 @@ addRecDef cycle state def =
361361 addRecDefHelp cycle state name (map fst args) body
362362
363363
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
365365addRecDefHelp cycle (State values funcs) name args body =
366366 case args of
367367 [] ->
compiler/src/Optimize/Names.hs+17−17
@@ -17,13 +17,13 @@ module Optimize.Names
1717
1818
1919import qualified Data.Map as Map
20+import qualified Data.Name as Name
2021import qualified Data.Set as Set
2122
2223import qualified AST.Canonical as Can
2324import qualified AST.Optimized as Opt
2425import qualified AST.Module.Name as ModuleName
2526import qualified Data.Index as Index
26−import qualified Elm.Name as N
2727import qualified Elm.Package as Pkg
2828import qualified Reporting.Region as R
2929
@@ -37,50 +37,50 @@ newtype Tracker a =
3737 forall r.
3838 Int
3939 -> Set.Set Opt.Global
40− -> Map.Map N.Name Int
41− -> (Int -> Set.Set Opt.Global -> Map.Map N.Name Int -> a -> r)
40+ -> Map.Map Name.Name Int
41+ -> (Int -> Set.Set Opt.Global -> Map.Map Name.Name Int -> a -> r)
4242 -> r
4343 )
4444
4545
46−run :: Tracker a -> (Set.Set Opt.Global, Map.Map N.Name Int, a)
46+run :: Tracker a -> (Set.Set Opt.Global, Map.Map Name.Name Int, a)
4747run (Tracker k) =
4848 k 0 Set.empty Map.empty
4949 (\_uid deps fields value -> (deps, fields, value))
5050
5151
52−generate :: Tracker N.Name
52+generate :: Tracker Name.Name
5353generate =
5454 Tracker $ \uid deps fields ok ->
55− ok (uid + 1) deps fields (N.addIndex "_n" uid)
55+ ok (uid + 1) deps fields (Name.fromVarIndex uid)
5656
5757
58−registerKernel :: N.Name -> a -> Tracker a
58+registerKernel :: Name.Name -> a -> Tracker a
5959registerKernel home value =
6060 Tracker $ \uid deps fields ok ->
6161 ok uid (Set.insert (toKernelGlobal home) deps) fields value
6262
6363
64−toKernelGlobal :: N.Name -> Opt.Global
64+toKernelGlobal :: Name.Name -> Opt.Global
6565toKernelGlobal home =
66− Opt.Global (ModuleName.Canonical Pkg.kernel home) N.dollar
66+ Opt.Global (ModuleName.Canonical Pkg.kernel home) Name.dollar
6767
6868
69−registerGlobal :: ModuleName.Canonical -> N.Name -> Tracker Opt.Expr
69+registerGlobal :: ModuleName.Canonical -> Name.Name -> Tracker Opt.Expr
7070registerGlobal home name =
7171 Tracker $ \uid deps fields ok ->
7272 let global = Opt.Global home name in
7373 ok uid (Set.insert global deps) fields (Opt.VarGlobal global)
7474
7575
76−registerDebug :: N.Name -> ModuleName.Canonical -> R.Region -> Tracker Opt.Expr
76+registerDebug :: Name.Name -> ModuleName.Canonical -> R.Region -> Tracker Opt.Expr
7777registerDebug name home region =
7878 Tracker $ \uid deps fields ok ->
7979 let global = Opt.Global ModuleName.debug name in
8080 ok uid (Set.insert global deps) fields (Opt.VarDebug name home region Nothing)
8181
8282
83−registerCtor :: ModuleName.Canonical -> N.Name -> Index.ZeroBased -> Can.CtorOpts -> Tracker Opt.Expr
83+registerCtor :: ModuleName.Canonical -> Name.Name -> Index.ZeroBased -> Can.CtorOpts -> Tracker Opt.Expr
8484registerCtor home name index opts =
8585 Tracker $ \uid deps fields ok ->
8686 let
@@ -104,16 +104,16 @@ registerCtor home name index opts =
104104
105105identity :: Opt.Global
106106identity =
107− Opt.Global ModuleName.basics N.identity
107+ Opt.Global ModuleName.basics Name.identity
108108
109109
110−registerField :: N.Name -> a -> Tracker a
110+registerField :: Name.Name -> a -> Tracker a
111111registerField name value =
112112 Tracker $ \uid d fields ok ->
113113 ok uid d (Map.insertWith (+) name 1 fields) value
114114
115115
116−registerFieldDict :: Map.Map N.Name v -> a -> Tracker a
116+registerFieldDict :: Map.Map Name.Name v -> a -> Tracker a
117117registerFieldDict newFields value =
118118 Tracker $ \uid d fields ok ->
119119 ok uid d (Map.unionWith (+) fields (Map.map toOne newFields)) value
@@ -123,13 +123,13 @@ toOne :: a -> Int
123123toOne _ = 1
124124
125125
126−registerFieldList :: [N.Name] -> a -> Tracker a
126+registerFieldList :: [Name.Name] -> a -> Tracker a
127127registerFieldList names value =
128128 Tracker $ \uid deps fields ok ->
129129 ok uid deps (foldr addOne fields names) value
130130
131131
132−addOne :: N.Name -> Map.Map N.Name Int -> Map.Map N.Name Int
132+addOne :: Name.Name -> Map.Map Name.Name Int -> Map.Map Name.Name Int
133133addOne name fields =
134134 Map.insertWith (+) name 1 fields
135135
compiler/src/Optimize/Port.hs+34−34
@@ -11,13 +11,13 @@ module Optimize.Port
1111import Prelude hiding (maybe, null)
1212import Control.Monad (foldM)
1313import qualified Data.Map as Map
14+import qualified Data.Name as Name
1415
1516import qualified AST.Canonical as Can
1617import qualified AST.Optimized as Opt
1718import qualified AST.Module.Name as ModuleName
1819import qualified AST.Utils.Type as Type
1920import qualified Data.Index as Index
20−import qualified Elm.Name as N
2121import qualified Optimize.Names as Names
2222
2323
@@ -38,7 +38,7 @@ toEncoder tipe =
3838 error "toEncoder: type variable"
3939
4040 Can.TUnit ->
41− Opt.Function [N.dollar] <$> encode "null"
41+ Opt.Function [Name.dollar] <$> encode "null"
4242
4343 Can.TTuple a b c ->
4444 encodeTuple a b c
@@ -46,16 +46,16 @@ toEncoder tipe =
4646 Can.TType _ name args ->
4747 case args of
4848 []
49− | name == N.float -> encode "float"
50− | name == N.int -> encode "int"
51− | name == N.bool -> encode "bool"
52− | name == N.string -> encode "string"
53− | name == N.value -> Names.registerGlobal ModuleName.basics N.identity
49+ | name == Name.float -> encode "float"
50+ | name == Name.int -> encode "int"
51+ | name == Name.bool -> encode "bool"
52+ | name == Name.string -> encode "string"
53+ | name == Name.value -> Names.registerGlobal ModuleName.basics Name.identity
5454
5555 [arg]
56− | name == N.maybe -> encodeMaybe arg
57− | name == N.list -> encodeList arg
58− | name == N.array -> encodeArray arg
56+ | name == Name.maybe -> encodeMaybe arg
57+ | name == Name.list -> encodeList arg
58+ | name == Name.array -> encodeArray arg
5959
6060 _ ->
6161 error "toEncoder: bad union type"
@@ -67,13 +67,13 @@ toEncoder tipe =
6767 let
6868 encodeField (name, Can.FieldType _ fieldType) =
6969 do encoder <- toEncoder fieldType
70− let value = Opt.Call encoder [Opt.Access (Opt.VarLocal N.dollar) name]
71− return $ Opt.Tuple (Opt.Str (N.toText name)) value Nothing
70+ let value = Opt.Call encoder [Opt.Access (Opt.VarLocal Name.dollar) name]
71+ return $ Opt.Tuple (Opt.Str (Name.toUtf8 name)) value Nothing
7272 in
7373 do object <- encode "object"
7474 keyValuePairs <- traverse encodeField (Map.toList fields)
7575 Names.registerFieldDict fields $
76− Opt.Function [N.dollar] (Opt.Call object [Opt.List keyValuePairs])
76+ Opt.Function [Name.dollar] (Opt.Call object [Opt.List keyValuePairs])
7777
7878
7979
@@ -85,8 +85,8 @@ encodeMaybe tipe =
8585 do null <- encode "null"
8686 encoder <- toEncoder tipe
8787 destruct <- Names.registerGlobal ModuleName.maybe "destruct"
88− return $ Opt.Function [N.dollar] $
89− Opt.Call destruct [ null, encoder, Opt.VarLocal N.dollar ]
88+ return $ Opt.Function [Name.dollar] $
89+ Opt.Call destruct [ null, encoder, Opt.VarLocal Name.dollar ]
9090
9191
9292encodeList :: Can.Type -> Names.Tracker Opt.Expr
@@ -107,27 +107,27 @@ encodeTuple :: Can.Type -> Can.Type -> Maybe Can.Type -> Names.Tracker Opt.Expr
107107encodeTuple a b maybeC =
108108 let
109109 let_ arg index body =
110− Opt.Destruct (Opt.Destructor arg (Opt.Index index (Opt.Root N.dollar))) body
110+ Opt.Destruct (Opt.Destructor arg (Opt.Index index (Opt.Root Name.dollar))) body
111111
112112 encodeArg arg tipe =
113113 do encoder <- toEncoder tipe
114114 return $ Opt.Call encoder [ Opt.VarLocal arg ]
115115 in
116116 do list <- encode "list"
117− identity <- Names.registerGlobal ModuleName.basics N.identity
117+ identity <- Names.registerGlobal ModuleName.basics Name.identity
118118 arg1 <- encodeArg "a" a
119119 arg2 <- encodeArg "b" b
120120
121121 case maybeC of
122122 Nothing ->
123− return $ Opt.Function [N.dollar] $
123+ return $ Opt.Function [Name.dollar] $
124124 let_ "a" Index.first $
125125 let_ "b" Index.second $
126126 Opt.Call list [ identity, Opt.List [ arg1, arg2 ] ]
127127
128128 Just c ->
129129 do arg3 <- encodeArg "c" c
130− return $ Opt.Function [N.dollar] $
130+ return $ Opt.Function [Name.dollar] $
131131 let_ "a" Index.first $
132132 let_ "b" Index.second $
133133 let_ "c" Index.third $
@@ -174,16 +174,16 @@ toDecoder tipe =
174174 Can.TType _ name args ->
175175 case args of
176176 []
177− | name == N.float -> decode "float"
178− | name == N.int -> decode "int"
179− | name == N.bool -> decode "bool"
180− | name == N.string -> decode "string"
181− | name == N.value -> decode "value"
177+ | name == Name.float -> decode "float"
178+ | name == Name.int -> decode "int"
179+ | name == Name.bool -> decode "bool"
180+ | name == Name.string -> decode "string"
181+ | name == Name.value -> decode "value"
182182
183183 [arg]
184− | name == N.maybe -> decodeMaybe arg
185− | name == N.list -> decodeList arg
186− | name == N.array -> decodeArray arg
184+ | name == Name.maybe -> decodeMaybe arg
185+ | name == Name.list -> decodeList arg
186+ | name == Name.array -> decodeArray arg
187187
188188 _ ->
189189 error "toDecoder: bad type"
@@ -268,7 +268,7 @@ decodeTuple a b maybeC =
268268
269269toLocal :: Int -> Opt.Expr
270270toLocal index =
271− Opt.VarLocal (N.addIndex "x" index)
271+ Opt.VarLocal (Name.fromVarIndex index)
272272
273273
274274indexAndThen :: Int -> Can.Type -> Opt.Expr -> Names.Tracker Opt.Expr
@@ -278,7 +278,7 @@ indexAndThen i tipe decoder =
278278 typeDecoder <- toDecoder tipe
279279 return $
280280 Opt.Call andThen
281− [ Opt.Function [N.addIndex "x" i] decoder
281+ [ Opt.Function [Name.fromVarIndex i] decoder
282282 , Opt.Call index [ Opt.Int i, typeDecoder ]
283283 ]
284284
@@ -287,7 +287,7 @@ indexAndThen i tipe decoder =
287287-- DECODE RECORDS
288288
289289
290−decodeRecord :: Map.Map N.Name Can.FieldType -> Names.Tracker Opt.Expr
290+decodeRecord :: Map.Map Name.Name Can.FieldType -> Names.Tracker Opt.Expr
291291decodeRecord fields =
292292 let
293293 toFieldExpr name _ =
@@ -301,7 +301,7 @@ decodeRecord fields =
301301 Names.registerFieldDict fields (Map.toList fields)
302302
303303
304−fieldAndThen :: Opt.Expr -> (N.Name, Can.FieldType) -> Names.Tracker Opt.Expr
304+fieldAndThen :: Opt.Expr -> (Name.Name, Can.FieldType) -> Names.Tracker Opt.Expr
305305fieldAndThen decoder (key, Can.FieldType _ tipe) =
306306 do andThen <- decode "andThen"
307307 field <- decode "field"
@@ -309,7 +309,7 @@ fieldAndThen decoder (key, Can.FieldType _ tipe) =
309309 return $
310310 Opt.Call andThen
311311 [ Opt.Function [key] decoder
312− , Opt.Call field [ Opt.Str (N.toText key), typeDecoder ]
312+ , Opt.Call field [ Opt.Str (Name.toUtf8 key), typeDecoder ]
313313 ]
314314
315315
@@ -317,11 +317,11 @@ fieldAndThen decoder (key, Can.FieldType _ tipe) =
317317-- GLOBALS HELPERS
318318
319319
320−encode :: N.Name -> Names.Tracker Opt.Expr
320+encode :: Name.Name -> Names.Tracker Opt.Expr
321321encode name =
322322 Names.registerGlobal ModuleName.jsonEncode name
323323
324324
325−decode :: N.Name -> Names.Tracker Opt.Expr
325+decode :: Name.Name -> Names.Tracker Opt.Expr
326326decode name =
327327 Names.registerGlobal ModuleName.jsonDecode name