@@ -22,6 +22,7 @@ import qualified Data.ByteString as B
22import qualified Data.List as List
22import qualified Data.List as List
23import Data.Map ((!))
23import Data.Map ((!))
24import qualified Data.Map as Map
24import qualified Data.Map as Map
25+import qualified Data.Name as Name
25import qualified Data.Text as Text
26import qualified Data.Text as Text
26import qualified Data.Text.Encoding as Text
27import qualified Data.Text.Encoding as Text
@@ -32,7 +33,6 @@ import qualified Data.OneOrMore as OneOrMore
32import qualified Elm.Compiler.Module as Module
33import qualified Elm.Compiler.Module as Module
33import qualified Elm.Compiler.Type as Type
34import qualified Elm.Compiler.Type as Type
34import qualified Elm.Compiler.Type.Extract as Extract
35import qualified Elm.Compiler.Type.Extract as Extract
35−import qualified Elm.Name as N
36import qualified Json.Decode as D
36import qualified Json.Decode as D
37import qualified Json.Encode as E
37import qualified Json.Encode as E
38import Json.Encode ((==>))
38import Json.Encode ((==>))
@@ -53,7 +53,7 @@ import qualified Parse.Primitives.Whitespace as W
55type Documentation =
55type Documentation =
56− Map.Map N.Name Module
56+ Map.Map Name.Name Module
59toDict :: [Module] -> Documentation
59toDict :: [Module] -> Documentation
@@ -62,7 +62,7 @@ toDict modules =
65−toPair :: Module -> (N.Name, Module)
65+toPair :: Module -> (Name.Name, Module)
66toPair modul@(Module name _ _ _ _ _) =
66toPair modul@(Module name _ _ _ _ _) =
67 (name, modul)
67 (name, modul)
@@ -73,20 +73,20 @@ toPair modul@(Module name _ _ _ _ _) =
74data Module =
74data Module =
76− { _name :: N.Name
76+ { _name :: Name.Name
77 , _comment :: Comment
77 , _comment :: Comment
78− , _unions :: Map.Map N.Name Union
78+ , _unions :: Map.Map Name.Name Union
79− , _aliases :: Map.Map N.Name Alias
79+ , _aliases :: Map.Map Name.Name Alias
80− , _values :: Map.Map N.Name Value
80+ , _values :: Map.Map Name.Name Value
81− , _binops :: Map.Map N.Name Binop
81+ , _binops :: Map.Map Name.Name Binop
85type Comment = Text.Text
85type Comment = Text.Text
88−data Alias = Alias Comment [N.Name] Type.Type
88+data Alias = Alias Comment [Name.Name] Type.Type
89−data Union = Union Comment [N.Name] [(N.Name, [Type.Type])]
89+data Union = Union Comment [Name.Name] [(Name.Name, [Type.Type])]
90data Value = Value Comment Type.Type
90data Value = Value Comment Type.Type
91data Binop = Binop Comment Type.Type Binop.Associativity Binop.Precedence
91data Binop = Binop Comment Type.Type Binop.Associativity Binop.Precedence
@@ -124,19 +124,19 @@ decoder =
124 <*> D.field "binops" (dictDecoder binop)
124 <*> D.field "binops" (dictDecoder binop)
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)
128dictDecoder entryDecoder =
128dictDecoder entryDecoder =
129 Map.fromList <$> D.list (named entryDecoder)
129 Map.fromList <$> D.list (named entryDecoder)
132−named :: D.Decoder Error a -> D.Decoder Error (N.Name, a)
132+named :: D.Decoder Error a -> D.Decoder Error (Name.Name, a)
133named entryDecoder =
133named entryDecoder =
135 <$> D.field "name" D.name
135 <$> D.field "name" D.name
136 <*> entryDecoder
136 <*> entryDecoder
139−nameDecoder :: D.Decoder Error N.Name
139+nameDecoder :: D.Decoder Error Name.Name
140nameDecoder =
140nameDecoder =
141 D.mapError (const BadName) Module.decoder
141 D.mapError (const BadName) Module.decoder
@@ -150,7 +150,7 @@ typeDecoder =
150-- UNION JSON
150-- UNION JSON
153−encodeUnion :: (N.Name, Union) -> E.Value
153+encodeUnion :: (Name.Name, Union) -> E.Value
154encodeUnion (name, Union comment args cases) =
154encodeUnion (name, Union comment args cases) =
156 [ "name" ==> E.name name
156 [ "name" ==> E.name name
@@ -168,12 +168,12 @@ union =
168 <*> D.field "cases" (D.list caseDecoder)
168 <*> D.field "cases" (D.list caseDecoder)
171−encodeCase :: ( N.Name, [Type.Type] ) -> E.Value
171+encodeCase :: ( Name.Name, [Type.Type] ) -> E.Value
172encodeCase ( tag, args ) =
172encodeCase ( tag, args ) =
173 E.list id [ E.name tag, E.list Type.encode args ]
173 E.list id [ E.name tag, E.list Type.encode args ]
176−caseDecoder :: D.Decoder Error ( N.Name, [Type.Type] )
176+caseDecoder :: D.Decoder Error ( Name.Name, [Type.Type] )
177caseDecoder =
177caseDecoder =
178 D.pair D.name (D.list typeDecoder)
178 D.pair D.name (D.list typeDecoder)
@@ -182,7 +182,7 @@ caseDecoder =
182-- ALIAS JSON
182-- ALIAS JSON
185−encodeAlias :: (N.Name, Alias) -> E.Value
185+encodeAlias :: (Name.Name, Alias) -> E.Value
186encodeAlias ( name, Alias comment args tipe) =
186encodeAlias ( name, Alias comment args tipe) =
188 [ "name" ==> E.name name
188 [ "name" ==> E.name name
@@ -204,7 +204,7 @@ alias =
204-- VALUE JSON
204-- VALUE JSON
207−encodeValue :: (N.Name, Value) -> E.Value
207+encodeValue :: (Name.Name, Value) -> E.Value
208encodeValue (name, Value comment tipe) =
208encodeValue (name, Value comment tipe) =
210 [ "name" ==> E.name name
210 [ "name" ==> E.name name
@@ -224,7 +224,7 @@ value =
224-- BINOP JSON
224-- BINOP JSON
227−encodeBinop :: (N.Name, Binop) -> E.Value
227+encodeBinop :: (Name.Name, Binop) -> E.Value
228encodeBinop (name, Binop comment tipe assoc prec) =
228encodeBinop (name, Binop comment tipe assoc prec) =
230 [ "name" ==> E.name name
230 [ "name" ==> E.name name
@@ -314,7 +314,7 @@ emptyModule (ModuleName.Canonical _ name) overview =
314-- PARSE OVERVIEW
314-- PARSE OVERVIEW
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]
318parseOverview (R.Region (R.Position row col) _) overview =
318parseOverview (R.Region (R.Position row col) _) overview =
319 case P.runAt row (col + 3) (chompOverview []) overview of
319 case P.runAt row (col + 3) (chompOverview []) overview of
320 Left err ->
320 Left err ->
@@ -324,7 +324,7 @@ parseOverview (R.Region (R.Position row col) _) overview =
324 Result.ok names
324 Result.ok names
327−chompOverview :: [A.Located N.Name] -> Parser [A.Located N.Name]
327+chompOverview :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
328chompOverview names =
328chompOverview names =
329 do isDocs <- W.chompUntilDocs
329 do isDocs <- W.chompUntilDocs
330 if isDocs
330 if isDocs
@@ -332,7 +332,7 @@ chompOverview names =
332 else return names
332 else return names
335−chompOverviewHelp :: [A.Located N.Name] -> Parser [A.Located N.Name]
335+chompOverviewHelp :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
336chompOverviewHelp names =
336chompOverviewHelp names =
337 do pos <- P.getPosition
337 do pos <- P.getPosition
338 (W.SPos spos) <- W.whitespace
338 (W.SPos spos) <- W.whitespace
@@ -341,7 +341,7 @@ chompOverviewHelp names =
341 else chompOverview =<< chompDocs names
341 else chompOverview =<< chompDocs names
344−chompDocs :: [A.Located N.Name] -> Parser [A.Located N.Name]
344+chompDocs :: [A.Located Name.Name] -> Parser [A.Located Name.Name]
345chompDocs names =
345chompDocs names =
346 do name <- P.addLocation (P.oneOf [ Var.lower, Var.upper, chompBinop ])
346 do name <- P.addLocation (P.oneOf [ Var.lower, Var.upper, chompBinop ])
347 spos <- W.whitespace
347 spos <- W.whitespace
@@ -354,7 +354,7 @@ chompDocs names =
357−chompBinop :: Parser N.Name
357+chompBinop :: Parser Name.Name
358chompBinop =
358chompBinop =
359 do Symbol.leftParen
359 do Symbol.leftParen
360 name <- Symbol.binop
360 name <- Symbol.binop
@@ -371,10 +371,10 @@ type Result i w a =
373type Dups =
373type Dups =
374− Map.Map N.Name (OneOrMore.OneOrMore R.Region)
374+ Map.Map Name.Name (OneOrMore.OneOrMore R.Region)
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 ()
378checkNames exports names =
378checkNames exports names =
379 do docs <- Map.traverseWithKey isUnique (List.foldl' addName Map.empty names)
379 do docs <- Map.traverseWithKey isUnique (List.foldl' addName Map.empty names)
380 let overlap = Map.size (Map.intersection docs exports)
380 let overlap = Map.size (Map.intersection docs exports)
@@ -386,12 +386,12 @@ checkNames exports names =
386 Result.ok ()
386 Result.ok ()
389−addName :: Dups -> A.Located N.Name -> Dups
389+addName :: Dups -> A.Located Name.Name -> Dups
390addName dict (A.At region name) =
390addName dict (A.At region name) =
391 Map.insertWith OneOrMore.more name (OneOrMore.one region) dict
391 Map.insertWith OneOrMore.more name (OneOrMore.one region) dict
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
395isUnique name regions =
395isUnique name regions =
396 case regions of
396 case regions of
397 OneOrMore.One region ->
397 OneOrMore.One region ->
@@ -402,12 +402,12 @@ isUnique name regions =
402 Result.throw (E.Duplicate name r1 r2)
402 Result.throw (E.Duplicate name r1 r2)
405−onlyInDocs :: N.Name -> R.Region -> Result i w a
405+onlyInDocs :: Name.Name -> R.Region -> Result i w a
406onlyInDocs name region =
406onlyInDocs name region =
407 Result.throw $ E.OnlyInDocs name region
407 Result.throw $ E.OnlyInDocs name region
410−onlyInExports :: N.Name -> A.Located Can.Export -> Result i w a
410+onlyInExports :: Name.Name -> A.Located Can.Export -> Result i w a
411onlyInExports name (A.At region _) =
411onlyInExports name (A.At region _) =
412 Result.throw $ E.OnlyInExports name region
412 Result.throw $ E.OnlyInExports name region
@@ -418,16 +418,16 @@ onlyInExports name (A.At region _) =
419data Info =
419data Info =
421− { _iComments :: Map.Map N.Name Comment
421+ { _iComments :: Map.Map Name.Name Comment
422 , _iValues :: Types
422 , _iValues :: Types
423− , _iUnions :: Map.Map N.Name Can.Union
423+ , _iUnions :: Map.Map Name.Name Can.Union
424− , _iAliases :: Map.Map N.Name Can.Alias
424+ , _iAliases :: Map.Map Name.Name Can.Alias
425− , _iBinops :: Map.Map N.Name Can.Binop
425+ , _iBinops :: Map.Map Name.Name Can.Binop
426 , _iEffects :: Can.Effects
426 , _iEffects :: Can.Effects
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)
431checkExport info name (A.At region export) =
431checkExport info name (A.At region export) =
432 case export of
432 case export of
433 Can.ExportValue ->
433 Can.ExportValue ->
@@ -468,7 +468,7 @@ checkExport info name (A.At region export) =
468 m { _values = Map.insert name (Value comment tipe) (_values m) }
468 m { _values = Map.insert name (Value comment tipe) (_values m) }
471−getComment :: R.Region -> N.Name -> Info -> Result i w Comment
471+getComment :: R.Region -> Name.Name -> Info -> Result i w Comment
472getComment region name info =
472getComment region name info =
473 case Map.lookup name (_iComments info) of
473 case Map.lookup name (_iComments info) of
474 Nothing ->
474 Nothing ->
@@ -478,7 +478,7 @@ getComment region name info =
478 Result.ok comment
478 Result.ok comment
481−getType :: N.Name -> Info -> Result i w Type.Type
481+getType :: Name.Name -> Info -> Result i w Type.Type
482getType name info =
482getType name info =
483 case _iValues info ! name of
483 case _iValues info ! name of
484 A.At defRegion Nothing ->
484 A.At defRegion Nothing ->
@@ -488,7 +488,7 @@ getType name info =
488 Result.ok (Extract.fromType tipe)
488 Result.ok (Extract.fromType tipe)
491−dector :: Can.Ctor -> (N.Name, [Type.Type])
491+dector :: Can.Ctor -> (Name.Name, [Type.Type])
492dector (Can.Ctor name _ _ args) =
492dector (Can.Ctor name _ _ args) =
493 ( name, map Extract.fromType args )
493 ( name, map Extract.fromType args )
@@ -498,7 +498,7 @@ dector (Can.Ctor name _ _ args) =
500type Types =
500type Types =
501− Map.Map N.Name (A.Located (Maybe Can.Type))
501+ Map.Map Name.Name (A.Located (Maybe Can.Type))
504gatherTypes :: Can.Decls -> Types -> Types
504gatherTypes :: Can.Decls -> Types -> Types