on master help sign in
Swap the primary AST phases over to Data.Name
commit4e941154687c503bb54eaf79017da086dd2a03a3 authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 19 Nov 2018, 11:40 (8 years ago) parent0f45ed9
4 files changed+123−122
compiler/src/AST/Canonical.hs+39−39 compiler/src/AST/Optimized.hs+28−27 compiler/src/AST/Source.hs+35−35 compiler/src/AST/Valid.hs+21−21
compiler/src/AST/Canonical.hs+39−39
@@ -57,6 +57,7 @@ import Data.Binary
5757import qualified Data.ByteString as B
5858import qualified Data.List as List
5959import qualified Data.Map as Map
60+import Data.Name (Name)
6061import Data.Text (Text)
6162import Data.Utf8 (Utf8)
6263
@@ -64,7 +65,6 @@ import qualified AST.Utils.Binop as Binop
6465import qualified AST.Module.Name as ModuleName
6566import qualified AST.Utils.Shader as Shader
6667import qualified Data.Index as Index
67−import qualified Elm.Name as N
6868import qualified Reporting.Annotation as A
6969import qualified Reporting.Region as R
7070
@@ -79,20 +79,20 @@ type Expr =
7979
8080-- CACHE Annotations for type inference
8181data Expr_
82− = VarLocal N.Name
83− | VarTopLevel ModuleName.Canonical N.Name
84− | VarKernel N.Name N.Name
85− | VarForeign ModuleName.Canonical N.Name Annotation
86− | VarCtor CtorOpts ModuleName.Canonical N.Name Index.ZeroBased Annotation
87− | VarDebug ModuleName.Canonical N.Name Annotation
88− | VarOperator N.Name ModuleName.Canonical N.Name Annotation -- CACHE real name for optimization
82+ = VarLocal Name
83+ | VarTopLevel ModuleName.Canonical Name
84+ | VarKernel Name Name
85+ | VarForeign ModuleName.Canonical Name Annotation
86+ | VarCtor CtorOpts ModuleName.Canonical Name Index.ZeroBased Annotation
87+ | VarDebug ModuleName.Canonical Name Annotation
88+ | VarOperator Name ModuleName.Canonical Name Annotation -- CACHE real name for optimization
8989 | Chr Utf8
9090 | Str Utf8
9191 | Int Int
9292 | Float Double
9393 | List [Expr]
9494 | Negate Expr
95− | Binop N.Name ModuleName.Canonical N.Name Annotation Expr Expr -- CACHE real name for optimization
95+ | Binop Name ModuleName.Canonical Name Annotation Expr Expr -- CACHE real name for optimization
9696 | Lambda [Pattern] Expr
9797 | Call Expr [Expr]
9898 | If [(Expr, Expr)] Expr
@@ -100,10 +100,10 @@ data Expr_
100100 | LetRec [Def] Expr
101101 | LetDestruct Pattern Expr Expr
102102 | Case Expr [CaseBranch]
103− | Accessor N.Name
104− | Access Expr (A.Located N.Name)
105− | Update N.Name Expr (Map.Map N.Name FieldUpdate)
106− | Record (Map.Map N.Name Expr)
103+ | Accessor Name
104+ | Access Expr (A.Located Name)
105+ | Update Name Expr (Map.Map Name FieldUpdate)
106+ | Record (Map.Map Name Expr)
107107 | Unit
108108 | Tuple Expr Expr (Maybe Expr)
109109 | Shader Text Text Shader.Shader
@@ -122,8 +122,8 @@ data FieldUpdate =
122122
123123
124124data Def
125− = Def (A.Located N.Name) [Pattern] Expr
126− | TypedDef (A.Located N.Name) FreeVars [(Pattern, Type)] Expr Type
125+ = Def (A.Located Name) [Pattern] Expr
126+ | TypedDef (A.Located Name) FreeVars [(Pattern, Type)] Expr Type
127127
128128
129129
@@ -146,9 +146,9 @@ type Pattern =
146146
147147data Pattern_
148148 = PAnything
149− | PVar N.Name
150− | PRecord [N.Name]
151− | PAlias Pattern N.Name
149+ | PVar Name
150+ | PRecord [Name]
151+ | PAlias Pattern Name
152152 | PUnit
153153 | PTuple Pattern Pattern (Maybe Pattern)
154154 | PList [Pattern]
@@ -159,9 +159,9 @@ data Pattern_
159159 | PInt Int
160160 | PCtor
161161 { _p_home :: ModuleName.Canonical
162− , _p_type :: N.Name
162+ , _p_type :: Name
163163 , _p_union :: Union
164− , _p_name :: N.Name
164+ , _p_name :: Name
165165 , _p_index :: Index.ZeroBased
166166 , _p_args :: [PatternCtorArg]
167167 }
@@ -186,17 +186,17 @@ data PatternCtorArg =
186186data Annotation = Forall FreeVars Type
187187
188188
189−type FreeVars = Map.Map N.Name ()
189+type FreeVars = Map.Map Name ()
190190
191191
192192data Type
193193 = TLambda Type Type
194− | TVar N.Name
195− | TType ModuleName.Canonical N.Name [Type]
196− | TRecord (Map.Map N.Name FieldType) (Maybe N.Name)
194+ | TVar Name
195+ | TType ModuleName.Canonical Name [Type]
196+ | TRecord (Map.Map Name FieldType) (Maybe Name)
197197 | TUnit
198198 | TTuple Type Type (Maybe Type)
199− | TAlias ModuleName.Canonical N.Name [(N.Name, Type)] AliasType
199+ | TAlias ModuleName.Canonical Name [(Name, Type)] AliasType
200200
201201
202202data AliasType
@@ -212,7 +212,7 @@ data FieldType =
212212-- for every canonical type. For example, if the canonical type is inferred
213213-- the orders will all be zeros.
214214--
215−fieldsToList :: Map.Map N.Name FieldType -> [(N.Name, Type)]
215+fieldsToList :: Map.Map Name FieldType -> [(Name, Type)]
216216fieldsToList fields =
217217 let
218218 getIndex (_, FieldType index _) =
@@ -234,20 +234,20 @@ data Module =
234234 , _docs :: Docs
235235 , _exports :: Exports
236236 , _decls :: Decls
237− , _unions :: Map.Map N.Name Union
238− , _aliases :: Map.Map N.Name Alias
239− , _binops :: Map.Map N.Name Binop
237+ , _unions :: Map.Map Name Union
238+ , _aliases :: Map.Map Name Alias
239+ , _binops :: Map.Map Name Binop
240240 , _effects :: Effects
241241 }
242242
243243
244−data Alias = Alias [N.Name] Type
245−data Binop = Binop_ Binop.Associativity Binop.Precedence N.Name
244+data Alias = Alias [Name] Type
245+data Binop = Binop_ Binop.Associativity Binop.Precedence Name
246246
247247
248248data Union =
249249 Union
250− { _u_vars :: [N.Name]
250+ { _u_vars :: [Name]
251251 , _u_alts :: [Ctor]
252252 , _u_numAlts :: Int -- CACHE numAlts for exhaustiveness checking
253253 , _u_opts :: CtorOpts -- CACHE which optimizations are available
@@ -262,7 +262,7 @@ data CtorOpts
262262
263263
264264data Ctor =
265− Ctor N.Name Index.ZeroBased Int [Type] -- CACHE length args
265+ Ctor Name Index.ZeroBased Int [Type] -- CACHE length args
266266
267267
268268
@@ -274,7 +274,7 @@ data Docs
274274 | YesDocs
275275 { _region :: R.Region
276276 , _overview :: B.ByteString
277− , _comments :: Map.Map N.Name Text
277+ , _comments :: Map.Map Name Text
278278 }
279279
280280
@@ -284,7 +284,7 @@ data Docs
284284
285285data Exports
286286 = ExportEverything R.Region
287− | Export (Map.Map N.Name (A.Located Export))
287+ | Export (Map.Map Name (A.Located Export))
288288
289289
290290data Export
@@ -302,7 +302,7 @@ data Export
302302
303303data Effects
304304 = NoEffects
305− | Ports (Map.Map N.Name Port)
305+ | Ports (Map.Map Name Port)
306306 | Manager R.Region R.Region R.Region Manager
307307
308308
@@ -312,9 +312,9 @@ data Port
312312
313313
314314data Manager
315− = Cmd N.Name
316− | Sub N.Name
317− | Fx N.Name N.Name
315+ = Cmd Name
316+ | Sub Name
317+ | Fx Name Name
318318
319319
320320
compiler/src/AST/Optimized.hs+28−27
@@ -22,6 +22,8 @@ import Control.Monad (liftM, liftM2, liftM3, liftM4)
2222import Data.Binary
2323import qualified Data.ByteString as BS
2424import qualified Data.Map as Map
25+import qualified Data.Name as Name
26+import Data.Name (Name)
2527import qualified Data.Set as Set
2628import Data.Text (Text)
2729import Data.Utf8 (Utf8)
@@ -29,7 +31,6 @@ import Data.Utf8 (Utf8)
2931import qualified AST.Canonical as Can
3032import qualified AST.Module.Name as ModuleName
3133import qualified Data.Index as Index
32−import qualified Elm.Name as N
3334import qualified Elm.Package as Pkg
3435import qualified Optimize.DecisionTree as DT
3536import qualified Reporting.Region as R
@@ -45,39 +46,39 @@ data Expr
4546 | Str Utf8
4647 | Int Int
4748 | Float Double
48− | VarLocal N.Name
49+ | VarLocal Name
4950 | VarGlobal Global
5051 | VarEnum Global Index.ZeroBased
5152 | VarBox Global
52− | VarCycle ModuleName.Canonical N.Name
53− | VarDebug N.Name ModuleName.Canonical R.Region (Maybe N.Name)
54− | VarKernel N.Name N.Name
53+ | VarCycle ModuleName.Canonical Name
54+ | VarDebug Name ModuleName.Canonical R.Region (Maybe Name)
55+ | VarKernel Name Name
5556 | List [Expr]
56− | Function [N.Name] Expr
57+ | Function [Name] Expr
5758 | Call Expr [Expr]
58− | TailCall N.Name [(N.Name, Expr)]
59+ | TailCall Name [(Name, Expr)]
5960 | If [(Expr, Expr)] Expr
6061 | Let Def Expr
6162 | Destruct Destructor Expr
62− | Case N.Name N.Name (Decider Choice) [(Int, Expr)]
63− | Accessor N.Name
64− | Access Expr N.Name
65− | Update Expr (Map.Map N.Name Expr)
66− | Record (Map.Map N.Name Expr)
63+ | Case Name Name (Decider Choice) [(Int, Expr)]
64+ | Accessor Name
65+ | Access Expr Name
66+ | Update Expr (Map.Map Name Expr)
67+ | Record (Map.Map Name Expr)
6768 | Unit
6869 | Tuple Expr Expr (Maybe Expr)
69− | Shader Text (Set.Set N.Name) (Set.Set N.Name)
70+ | Shader Text (Set.Set Name) (Set.Set Name)
7071
7172
72−data Global = Global ModuleName.Canonical N.Name
73+data Global = Global ModuleName.Canonical Name
7374 deriving (Eq, Ord)
7475
7576
7677-- Provide "List" not "Elm.Kernel.List"
7778--
78−kernel :: N.Name -> Global
79+kernel :: Name -> Global
7980kernel home =
80− Global (ModuleName.Canonical Pkg.kernel home) N.dollar
81+ Global (ModuleName.Canonical Pkg.kernel home) Name.dollar
8182
8283
8384
@@ -85,19 +86,19 @@ kernel home =
8586
8687
8788data Def
88− = Def N.Name Expr
89− | TailDef N.Name [N.Name] Expr
89+ = Def Name Expr
90+ | TailDef Name [Name] Expr
9091
9192
9293data Destructor =
93− Destructor N.Name Path
94+ Destructor Name Path
9495
9596
9697data Path
9798 = Index Index.ZeroBased Path
98− | Field N.Name Path
99+ | Field Name Path
99100 | Unbox Path
100− | Root N.Name
101+ | Root Name
101102
102103
103104
@@ -132,7 +133,7 @@ data Graph =
132133 Graph
133134 { _mains :: Map.Map ModuleName.Canonical Main
134135 , _nodes :: Map.Map Global Node
135− , _fields :: Map.Map N.Name Int
136+ , _fields :: Map.Map Name Int
136137 }
137138
138139
@@ -146,12 +147,12 @@ data Main
146147
147148data Node
148149 = Define Expr (Set.Set Global)
149− | DefineTailFunc [N.Name] Expr (Set.Set Global)
150+ | DefineTailFunc [Name] Expr (Set.Set Global)
150151 | Ctor Index.ZeroBased Int
151152 | Enum Index.ZeroBased
152153 | Box
153154 | Link Global
154− | Cycle [N.Name] [(N.Name, Expr)] [Def] (Set.Set Global)
155+ | Cycle [Name] [(Name, Expr)] [Def] (Set.Set Global)
155156 | Manager EffectsType
156157 | Kernel KContent (Maybe KContent)
157158 | PortIncoming Expr (Set.Set Global)
@@ -167,9 +168,9 @@ data KContent =
167168
168169data KChunk
169170 = JS BS.ByteString
170− | ElmVar ModuleName.Canonical N.Name
171− | JsVar N.Name N.Name
172− | ElmField N.Name
171+ | ElmVar ModuleName.Canonical Name
172+ | JsVar Name Name
173+ | ElmField Name
173174 | JsField Int
174175 | JsEnum Int
175176 | Debug
compiler/src/AST/Source.hs+35−35
@@ -19,12 +19,12 @@ module AST.Source
1919
2020
2121import qualified Data.ByteString as B
22+import Data.Name (Name)
2223import Data.Text (Text)
2324import Data.Utf8 (Utf8)
2425
2526import qualified AST.Utils.Binop as Binop
2627import qualified AST.Utils.Shader as Shader
27−import qualified Elm.Name as N
2828import qualified Reporting.Annotation as A
2929import qualified Reporting.Region as R
3030
@@ -41,21 +41,21 @@ data Expr_
4141 | Str Utf8
4242 | Int Int
4343 | Float Double
44− | Var VarType N.Name
45− | VarQual VarType N.Name N.Name
44+ | Var VarType Name
45+ | VarQual VarType Name Name
4646 | List [Expr]
47− | Op N.Name
47+ | Op Name
4848 | Negate Expr
49− | Binops [(Expr, A.Located N.Name)] Expr
49+ | Binops [(Expr, A.Located Name)] Expr
5050 | Lambda [Pattern] Expr
5151 | Call Expr [Expr]
5252 | If [(Expr, Expr)] Expr
5353 | Let [A.Located Def] Expr
5454 | Case Expr [(Pattern, Expr)]
55− | Accessor N.Name
56− | Access Expr (A.Located N.Name)
57− | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
58− | Record [(A.Located N.Name, Expr)]
55+ | Accessor Name
56+ | Access Expr (A.Located Name)
57+ | Update (A.Located Name) [(A.Located Name, Expr)]
58+ | Record [(A.Located Name, Expr)]
5959 | Unit
6060 | Tuple Expr Expr [Expr]
6161 | Shader Text Text Shader.Shader
@@ -69,8 +69,8 @@ data VarType = Value | Ctor
6969
7070
7171data Def
72− = Annotate N.Name Type
73− | Define (A.Located N.Name) [Pattern] Expr
72+ = Annotate Name Type
73+ | Define (A.Located Name) [Pattern] Expr
7474 | Destruct Pattern Expr
7575
7676
@@ -83,13 +83,13 @@ type Pattern = A.Located Pattern_
8383
8484data Pattern_
8585 = PAnything
86− | PVar N.Name
87− | PRecord [A.Located N.Name]
88− | PAlias Pattern (A.Located N.Name)
86+ | PVar Name
87+ | PRecord [A.Located Name]
88+ | PAlias Pattern (A.Located Name)
8989 | PUnit
9090 | PTuple Pattern Pattern [Pattern]
91− | PCtor R.Region N.Name [Pattern]
92− | PCtorQual R.Region N.Name N.Name [Pattern]
91+ | PCtor R.Region Name [Pattern]
92+ | PCtorQual R.Region Name Name [Pattern]
9393 | PList [Pattern]
9494 | PCons Pattern Pattern
9595 | PChr Utf8
@@ -107,10 +107,10 @@ type Type =
107107
108108data Type_
109109 = TLambda Type Type
110− | TVar N.Name
111− | TType R.Region N.Name [Type]
112− | TTypeQual R.Region N.Name N.Name [Type]
113− | TRecord [(A.Located N.Name, Type)] (Maybe (A.Located N.Name))
110+ | TVar Name
111+ | TType R.Region Name [Type]
112+ | TTypeQual R.Region Name Name [Type]
113+ | TRecord [(A.Located Name, Type)] (Maybe (A.Located Name))
114114 | TUnit
115115 | TTuple Type Type [Type]
116116
@@ -123,13 +123,13 @@ type Decl = A.Located Decl_
123123
124124
125125data Decl_
126− = Union (A.Located N.Name) [A.Located N.Name] [(A.Located N.Name, [Type])]
127− | Alias (A.Located N.Name) [A.Located N.Name] Type
128− | Binop N.Name Binop.Associativity Binop.Precedence N.Name
129− | Port (A.Located N.Name) Type
126+ = Union (A.Located Name) [A.Located Name] [(A.Located Name, [Type])]
127+ | Alias (A.Located Name) [A.Located Name] Type
128+ | Binop Name Binop.Associativity Binop.Precedence Name
129+ | Port (A.Located Name) Type
130130 | Docs Text
131− | Annotation (A.Located N.Name) Type
132− | Definition (A.Located N.Name) [Pattern] Expr
131+ | Annotation (A.Located Name) Type
132+ | Definition (A.Located Name) [Pattern] Expr
133133
134134
135135
@@ -142,7 +142,7 @@ data Module decls =
142142
143143data Header
144144 = Header
145− { _name :: N.Name
145+ { _name :: Name
146146 , _effects :: Effects
147147 , _exports :: A.Located Exposing
148148 , _docs :: Docs
@@ -151,8 +151,8 @@ data Header
151151
152152data Import =
153153 Import
154− { _import :: A.Located N.Name
155− , _alias :: Maybe N.Name
154+ { _import :: A.Located Name
155+ , _alias :: Maybe Name
156156 , _exposing :: Exposing
157157 }
158158
@@ -169,9 +169,9 @@ data Effects
169169
170170
171171data Manager
172− = Cmd (A.Located N.Name)
173− | Sub (A.Located N.Name)
174− | Fx (A.Located N.Name) (A.Located N.Name)
172+ = Cmd (A.Located Name)
173+ | Sub (A.Located Name)
174+ | Fx (A.Located Name) (A.Located Name)
175175
176176
177177
@@ -184,9 +184,9 @@ data Exposing
184184
185185
186186data Exposed
187− = Lower !N.Name
188− | Upper !N.Name !Privacy
189− | Operator !N.Name
187+ = Lower !Name
188+ | Upper !Name !Privacy
189+ | Operator !Name
190190
191191
192192data Privacy
compiler/src/AST/Valid.hs+21−21
@@ -17,13 +17,13 @@ module AST.Valid
1717
1818
1919import qualified Data.Map as Map
20+import Data.Name (Name)
2021import Data.Text (Text)
2122import Data.Utf8 (Utf8)
2223
2324import qualified AST.Utils.Binop as Binop
2425import qualified AST.Source as Src
2526import qualified AST.Utils.Shader as Shader
26−import qualified Elm.Name as N
2727import qualified Reporting.Annotation as A
2828import qualified Reporting.Region as R
2929
@@ -40,21 +40,21 @@ data Expr_
4040 | Str Utf8
4141 | Int Int
4242 | Float Double
43− | Var Src.VarType N.Name
44− | VarQual Src.VarType N.Name N.Name
43+ | Var Src.VarType Name
44+ | VarQual Src.VarType Name Name
4545 | List [Expr]
46− | Op N.Name
46+ | Op Name
4747 | Negate Expr
48− | Binops [(Expr, A.Located N.Name)] Expr
48+ | Binops [(Expr, A.Located Name)] Expr
4949 | Lambda [Src.Pattern] Expr
5050 | Call Expr [Expr]
5151 | If [(Expr, Expr)] Expr
5252 | Let [Def] Expr
5353 | Case Expr [(Src.Pattern, Expr)]
54− | Accessor N.Name
55− | Access Expr (A.Located N.Name)
56− | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
57− | Record [(A.Located N.Name, Expr)]
54+ | Accessor Name
55+ | Access Expr (A.Located Name)
56+ | Update (A.Located Name) [(A.Located Name, Expr)]
57+ | Record [(A.Located Name, Expr)]
5858 | Unit
5959 | Tuple Expr Expr [Expr]
6060 | Shader Text Text Shader.Shader
@@ -65,7 +65,7 @@ data Expr_
6565
6666
6767data Def
68− = Define R.Region (A.Located N.Name) [Src.Pattern] Expr (Maybe Src.Type)
68+ = Define R.Region (A.Located Name) [Src.Pattern] Expr (Maybe Src.Type)
6969 | Destruct R.Region Src.Pattern Expr
7070
7171
@@ -75,9 +75,9 @@ data Def
7575
7676data Module =
7777 Module
78− { _name :: N.Name
78+ { _name :: Name
7979 , _overview :: Src.Docs
80− , _docs :: Map.Map N.Name Text
80+ , _docs :: Map.Map Name Text
8181 , _exports :: A.Located Src.Exposing
8282 , _imports :: [Src.Import]
8383 , _decls :: [A.Located Decl]
@@ -88,10 +88,10 @@ data Module =
8888 }
8989
9090
91−data Decl = Decl (A.Located N.Name) [Src.Pattern] Expr (Maybe Src.Type)
92−data Union = Union R.Region (A.Located N.Name) [A.Located N.Name] [(A.Located N.Name, [Src.Type])]
93−data Alias = Alias R.Region (A.Located N.Name) [A.Located N.Name] Src.Type
94−data Binop = Binop N.Name Binop.Associativity Binop.Precedence N.Name
91+data Decl = Decl (A.Located Name) [Src.Pattern] Expr (Maybe Src.Type)
92+data Union = Union R.Region (A.Located Name) [A.Located Name] [(A.Located Name, [Src.Type])]
93+data Alias = Alias R.Region (A.Located Name) [A.Located Name] Src.Type
94+data Binop = Binop Name Binop.Associativity Binop.Precedence Name
9595
9696
9797data Effects
@@ -101,15 +101,15 @@ data Effects
101101
102102
103103data Manager
104− = Cmd (A.Located N.Name)
105− | Sub (A.Located N.Name)
106− | Fx (A.Located N.Name) (A.Located N.Name)
104+ = Cmd (A.Located Name)
105+ | Sub (A.Located Name)
106+ | Fx (A.Located Name) (A.Located Name)
107107
108108
109−data Port = Port (A.Located N.Name) Src.Type
109+data Port = Port (A.Located Name) Src.Type
110110
111111
112−defaultModule :: Map.Map N.Name Text -> [Src.Import] -> [A.Located Decl] -> [Union] -> [Alias] -> [Binop] -> Module
112+defaultModule :: Map.Map Name Text -> [Src.Import] -> [A.Located Decl] -> [Union] -> [Alias] -> [Binop] -> Module
113113defaultModule docs imports decls unions aliases binop =
114114 Module
115115 { _name = "Main"