@@ -22,6 +22,7 @@ import qualified Data.ByteString as B
2222import qualified Data.List as List
2323import Data.Map ((!))
2424import qualified Data.Map as Map
25+import qualified Data.Name as Name
2526import qualified Data.Text as Text
2627import qualified Data.Text.Encoding as Text
2728
@@ -32,7 +33,6 @@ import qualified Data.OneOrMore as OneOrMore
3233import qualified Elm.Compiler.Module as Module
3334import qualified Elm.Compiler.Type as Type
3435import qualified Elm.Compiler.Type.Extract as Extract
35−import qualified Elm.Name as N
3636import qualified Json.Decode as D
3737import qualified Json.Encode as E
3838import Json.Encode ((==>))
@@ -53,7 +53,7 @@ import qualified Parse.Primitives.Whitespace as W
5353
5454
5555type Documentation =
56− Map.Map N.Name Module
56+ Map.Map Name.Name Module
5757
5858
5959toDict :: [Module] -> Documentation
@@ -62,7 +62,7 @@ toDict modules =
6262
6363
6464
65−toPair :: Module -> (N.Name, Module)
65+toPair :: Module -> (Name.Name, Module)
6666toPair modul@(Module name _ _ _ _ _) =
6767 (name, modul)
6868
@@ -73,20 +73,20 @@ toPair modul@(Module name _ _ _ _ _) =
7373
7474data Module =
7575 Module
76− { _name :: N.Name
76+ { _name :: Name.Name
7777 , _comment :: Comment
78− , _unions :: Map.Map N.Name Union
79− , _aliases :: Map.Map N.Name Alias
80− , _values :: Map.Map N.Name Value
81− , _binops :: Map.Map N.Name Binop
78+ , _unions :: Map.Map Name.Name Union
79+ , _aliases :: Map.Map Name.Name Alias
80+ , _values :: Map.Map Name.Name Value
81+ , _binops :: Map.Map Name.Name Binop
8282 }
8383
8484
8585type Comment = Text.Text
8686
8787
88−data Alias = Alias Comment [N.Name] Type.Type
89−data Union = Union Comment [N.Name] [(N.Name, [Type.Type])]
88+data Alias = Alias Comment [Name.Name] Type.Type
89+data Union = Union Comment [Name.Name] [(Name.Name, [Type.Type])]
9090data Value = Value Comment Type.Type
9191data Binop = Binop Comment Type.Type Binop.Associativity Binop.Precedence
9292
@@ -124,19 +124,19 @@ decoder =
124124 <*> D.field "binops" (dictDecoder binop)
125125
126126
127−dictDecoder :: D.Decoder Error a -> D.Decoder Error (Map.Map N.Name a)
127+dictDecoder :: D.Decoder Error a -> D.Decoder Error (Map.Map Name.Name a)
128128dictDecoder entryDecoder =
129129 Map.fromList <$> D.list (named entryDecoder)
130130
131131
132−named :: D.Decoder Error a -> D.Decoder Error (N.Name, a)
132+named :: D.Decoder Error a -> D.Decoder Error (Name.Name, a)
133133named entryDecoder =
134134 (,)
135135 <$> D.field "name" D.name
136136 <*> entryDecoder
137137
138138
139−nameDecoder :: D.Decoder Error N.Name
139+nameDecoder :: D.Decoder Error Name.Name
140140nameDecoder =
141141 D.mapError (const BadName) Module.decoder
142142
@@ -150,7 +150,7 @@ typeDecoder =
150150-- UNION JSON
151151
152152
153−encodeUnion :: (N.Name, Union) -> E.Value
153+encodeUnion :: (Name.Name, Union) -> E.Value
154154encodeUnion (name, Union comment args cases) =
155155 E.object
156156 [ "name" ==> E.name name
@@ -168,12 +168,12 @@ union =
168168 <*> D.field "cases" (D.list caseDecoder)
169169
170170
171−encodeCase :: ( N.Name, [Type.Type] ) -> E.Value
171+encodeCase :: ( Name.Name, [Type.Type] ) -> E.Value
172172encodeCase ( tag, args ) =
173173 E.list id [ E.name tag, E.list Type.encode args ]
174174
175175
176−caseDecoder :: D.Decoder Error ( N.Name, [Type.Type] )
176+caseDecoder :: D.Decoder Error ( Name.Name, [Type.Type] )
177177caseDecoder =
178178 D.pair D.name (D.list typeDecoder)
179179
@@ -182,7 +182,7 @@ caseDecoder =
182182-- ALIAS JSON
183183
184184
185−encodeAlias :: (N.Name, Alias) -> E.Value
185+encodeAlias :: (Name.Name, Alias) -> E.Value
186186encodeAlias ( name, Alias comment args tipe) =
187187 E.object
188188 [ "name" ==> E.name name
@@ -204,7 +204,7 @@ alias =
204204-- VALUE JSON
205205
206206
207−encodeValue :: (N.Name, Value) -> E.Value
207+encodeValue :: (Name.Name, Value) -> E.Value
208208encodeValue (name, Value comment tipe) =
209209 E.object
210210 [ "name" ==> E.name name
@@ -224,7 +224,7 @@ value =
224224-- BINOP JSON
225225
226226
227−encodeBinop :: (N.Name, Binop) -> E.Value
227+encodeBinop :: (Name.Name, Binop) -> E.Value
228228encodeBinop (name, Binop comment tipe assoc prec) =
229229 E.object
230230 [ "name" ==> E.name name
@@ -314,7 +314,7 @@ emptyModule (ModuleName.Canonical _ name) overview =
314314-- PARSE OVERVIEW
315315
316316
317−parseOverview :: R.Region -> B.ByteString -> Result.Result i w Error.Error [A.Located N.Name]
317+parseOverview :: R.Region -> B.ByteString -> Result.Result i w Error.Error [A.Located Name.Name]
318318parseOverview (R.Region (R.Position row col) _) overview =
319319 case P.runAt row (col + 3) (chompOverview []) overview of
320320 Left err ->
@@ -324,7 +324,7 @@ parseOverview (R.Region (R.Position row col) _) overview =
324324 Result.ok names
325325
326326
327−chompOverview :: [A.Located N.Name] -> Parser [A.Located N.Name]
327+chompOverview :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
328328chompOverview names =
329329 do isDocs <- W.chompUntilDocs
330330 if isDocs
@@ -332,7 +332,7 @@ chompOverview names =
332332 else return names
333333
334334
335−chompOverviewHelp :: [A.Located N.Name] -> Parser [A.Located N.Name]
335+chompOverviewHelp :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
336336chompOverviewHelp names =
337337 do pos <- P.getPosition
338338 (W.SPos spos) <- W.whitespace
@@ -341,7 +341,7 @@ chompOverviewHelp names =
341341 else chompOverview =<< chompDocs names
342342
343343
344−chompDocs :: [A.Located N.Name] -> Parser [A.Located N.Name]
344+chompDocs :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
345345chompDocs names =
346346 do name <- P.addLocation (P.oneOf [ Var.lower, Var.upper, chompBinop ])
347347 spos <- W.whitespace
@@ -354,7 +354,7 @@ chompDocs names =
354354 ]
355355
356356
357−chompBinop :: Parser N.Name
357+chompBinop :: Parser Name.Name
358358chompBinop =
359359 do Symbol.leftParen
360360 name <- Symbol.binop
@@ -371,10 +371,10 @@ type Result i w a =
371371
372372
373373type Dups =
374− Map.Map N.Name (OneOrMore.OneOrMore R.Region)
374+ Map.Map Name.Name (OneOrMore.OneOrMore R.Region)
375375
376376
377−checkNames :: Map.Map N.Name (A.Located Can.Export) -> [A.Located N.Name] -> Result i w ()
377+checkNames :: Map.Map Name.Name (A.Located Can.Export) -> [A.Located Name.Name] -> Result i w ()
378378checkNames exports names =
379379 do docs <- Map.traverseWithKey isUnique (List.foldl' addName Map.empty names)
380380 let overlap = Map.size (Map.intersection docs exports)
@@ -386,12 +386,12 @@ checkNames exports names =
386386 Result.ok ()
387387
388388
389−addName :: Dups -> A.Located N.Name -> Dups
389+addName :: Dups -> A.Located Name.Name -> Dups
390390addName dict (A.At region name) =
391391 Map.insertWith OneOrMore.more name (OneOrMore.one region) dict
392392
393393
394−isUnique :: N.Name -> OneOrMore.OneOrMore R.Region -> Result i w R.Region
394+isUnique :: Name.Name -> OneOrMore.OneOrMore R.Region -> Result i w R.Region
395395isUnique name regions =
396396 case regions of
397397 OneOrMore.One region ->
@@ -402,12 +402,12 @@ isUnique name regions =
402402 Result.throw (E.Duplicate name r1 r2)
403403
404404
405−onlyInDocs :: N.Name -> R.Region -> Result i w a
405+onlyInDocs :: Name.Name -> R.Region -> Result i w a
406406onlyInDocs name region =
407407 Result.throw $ E.OnlyInDocs name region
408408
409409
410−onlyInExports :: N.Name -> A.Located Can.Export -> Result i w a
410+onlyInExports :: Name.Name -> A.Located Can.Export -> Result i w a
411411onlyInExports name (A.At region _) =
412412 Result.throw $ E.OnlyInExports name region
413413
@@ -418,16 +418,16 @@ onlyInExports name (A.At region _) =
418418
419419data Info =
420420 Info
421− { _iComments :: Map.Map N.Name Comment
421+ { _iComments :: Map.Map Name.Name Comment
422422 , _iValues :: Types
423− , _iUnions :: Map.Map N.Name Can.Union
424− , _iAliases :: Map.Map N.Name Can.Alias
425− , _iBinops :: Map.Map N.Name Can.Binop
423+ , _iUnions :: Map.Map Name.Name Can.Union
424+ , _iAliases :: Map.Map Name.Name Can.Alias
425+ , _iBinops :: Map.Map Name.Name Can.Binop
426426 , _iEffects :: Can.Effects
427427 }
428428
429429
430−checkExport :: Info -> N.Name -> A.Located Can.Export -> Result i w (Module -> Module)
430+checkExport :: Info -> Name.Name -> A.Located Can.Export -> Result i w (Module -> Module)
431431checkExport info name (A.At region export) =
432432 case export of
433433 Can.ExportValue ->
@@ -468,7 +468,7 @@ checkExport info name (A.At region export) =
468468 m { _values = Map.insert name (Value comment tipe) (_values m) }
469469
470470
471−getComment :: R.Region -> N.Name -> Info -> Result i w Comment
471+getComment :: R.Region -> Name.Name -> Info -> Result i w Comment
472472getComment region name info =
473473 case Map.lookup name (_iComments info) of
474474 Nothing ->
@@ -478,7 +478,7 @@ getComment region name info =
478478 Result.ok comment
479479
480480
481−getType :: N.Name -> Info -> Result i w Type.Type
481+getType :: Name.Name -> Info -> Result i w Type.Type
482482getType name info =
483483 case _iValues info ! name of
484484 A.At defRegion Nothing ->
@@ -488,7 +488,7 @@ getType name info =
488488 Result.ok (Extract.fromType tipe)
489489
490490
491−dector :: Can.Ctor -> (N.Name, [Type.Type])
491+dector :: Can.Ctor -> (Name.Name, [Type.Type])
492492dector (Can.Ctor name _ _ args) =
493493 ( name, map Extract.fromType args )
494494
@@ -498,7 +498,7 @@ dector (Can.Ctor name _ _ args) =
498498
499499
500500type Types =
501− Map.Map N.Name (A.Located (Maybe Can.Type))
501+ Map.Map Name.Name (A.Located (Maybe Can.Type))
502502
503503
504504gatherTypes :: Can.Decls -> Types -> Types