@@ -10,6 +10,7 @@ module Elm.Kernel
10import qualified Data.ByteString as B
10import qualified Data.ByteString as B
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.Word (Word8)
15import Data.Word (Word8)
@@ -17,7 +18,6 @@ import Data.Word (Word8)
17import qualified AST.Optimized as Opt
18import qualified AST.Optimized as Opt
18import qualified AST.Source as Src
19import qualified AST.Source as Src
19import qualified AST.Module.Name as ModuleName
20import qualified AST.Module.Name as ModuleName
20−import qualified Elm.Name as N
21import qualified Elm.Package as Pkg
21import qualified Elm.Package as Pkg
22import Parse.Primitives (Parser, run)
22import Parse.Primitives (Parser, run)
23import qualified Parse.Primitives.Kernel as K
23import qualified Parse.Primitives.Kernel as K
@@ -32,7 +32,7 @@ import qualified Reporting.Error as E
34type ImportDict =
34type ImportDict =
35− Map.Map N.Name [Pkg.Name]
35+ Map.Map Name.Name [Pkg.Name]
38parse :: ImportDict -> B.ByteString -> Either E.Error Opt.KContent
38parse :: ImportDict -> B.ByteString -> Either E.Error Opt.KContent
@@ -64,7 +64,7 @@ parser importDict =
66type VarTable =
66type VarTable =
67− Map.Map N.Name Opt.KChunk
67+ Map.Map Name.Name Opt.KChunk
70data State =
70data State =
@@ -78,13 +78,13 @@ processImports importDict imports =
79addImport :: ImportDict -> State -> Src.Import -> State
79addImport :: ImportDict -> State -> Src.Import -> State
80addImport importDict state (Src.Import (A.At _ home) maybeAlias exposing) =
80addImport importDict state (Src.Import (A.At _ home) maybeAlias exposing) =
81− if ModuleName.isKernel home then
81+ if Name.isKernel home then
82 case maybeAlias of
82 case maybeAlias of
84− error ("Cannot use aliases on kernel import of: " ++ N.toString home)
84+ error ("Cannot use aliases on kernel import of: " ++ Name.toString home)
86 Nothing ->
86 Nothing ->
87− addKernelImport (ModuleName.getKernel home) exposing state
87+ addKernelImport (Name.getKernel home) exposing state
90 case Map.lookup home importDict of
90 case Map.lookup home importDict of
@@ -96,46 +96,46 @@ addImport importDict state (Src.Import (A.At _ home) maybeAlias exposing) =
96 addNormalImport canonicalHome prefix exposing state
96 addNormalImport canonicalHome prefix exposing state
99− error ("Cannot find kernel import of: " ++ N.toString home)
99+ error ("Cannot find kernel import of: " ++ Name.toString home)
102-- INVARIANT: the `home` is the * in `Elm.Kernel.*`
102-- INVARIANT: the `home` is the * in `Elm.Kernel.*`
104−addKernelImport :: N.Name -> Src.Exposing -> State -> State
104+addKernelImport :: Name.Name -> Src.Exposing -> State -> State
105addKernelImport home exposing (State vtable deps) =
105addKernelImport home exposing (State vtable deps) =
107 addVar table name =
107 addVar table name =
108− Map.insert (N.sepBy 0x5F {- _ -} home name) (Opt.JsVar home name) table
108+ Map.insert (Name.sepBy 0x5F {- _ -} home name) (Opt.JsVar home name) table
111 (List.foldl' addVar vtable (toNames exposing))
111 (List.foldl' addVar vtable (toNames exposing))
112 (Set.insert (Opt.kernel home) deps)
112 (Set.insert (Opt.kernel home) deps)
115−addNormalImport :: ModuleName.Canonical -> N.Name -> Src.Exposing -> State -> State
115+addNormalImport :: ModuleName.Canonical -> Name.Name -> Src.Exposing -> State -> State
116addNormalImport home prefix exposing state =
116addNormalImport home prefix exposing state =
118 addVar (State vtable deps) name =
118 addVar (State vtable deps) name =
120− (Map.insert (N.sepBy 0x5F {- _ -} prefix name) (Opt.ElmVar home name) vtable)
120+ (Map.insert (Name.sepBy 0x5F {- _ -} prefix name) (Opt.ElmVar home name) vtable)
121 (Set.insert (Opt.Global home name) deps)
121 (Set.insert (Opt.Global home name) deps)
123 List.foldl' addVar state (toNames exposing)
123 List.foldl' addVar state (toNames exposing)
126−toPrefix :: N.Name -> Maybe N.Name -> N.Name
126+toPrefix :: Name.Name -> Maybe Name.Name -> Name.Name
127toPrefix home maybeAlias =
127toPrefix home maybeAlias =
128 case maybeAlias of
128 case maybeAlias of
129 Just alias ->
129 Just alias ->
132 Nothing ->
132 Nothing ->
133− if N.contains 0x2E {- . -} home then
133+ if Name.hasDot home then
134− error ("kernel imports with dots need an alias: " ++ show (N.toString home))
134+ error ("kernel imports with dots need an alias: " ++ show (Name.toString home))
138−toNames :: Src.Exposing -> [N.Name]
138+toNames :: Src.Exposing -> [Name.Name]
139toNames exposing =
139toNames exposing =
140 case exposing of
140 case exposing of
141 Src.Open ->
141 Src.Open ->
@@ -145,7 +145,7 @@ toNames exposing =
145 map toName exposedList
145 map toName exposedList
148−toName :: A.Located Src.Exposed -> N.Name
148+toName :: A.Located Src.Exposed -> Name.Name
149toName (A.At _ exposed) =
149toName (A.At _ exposed) =
150 case exposed of
150 case exposed of
151 Src.Lower name ->
151 Src.Lower name ->
@@ -185,7 +185,7 @@ chompChunks vtable enums fields chunks =
185 K.Import var ->
185 K.Import var ->
186 case Map.lookup var vtable of
186 case Map.lookup var vtable of
187 Nothing ->
187 Nothing ->
188− error ("Bad kernel symbol: " ++ N.toString var)
188+ error ("Bad kernel symbol: " ++ Name.toString var)
190 Just chunk ->
190 Just chunk ->
191 chompChunks vtable enums fields $
191 chompChunks vtable enums fields $
@@ -211,10 +211,10 @@ chompChunks vtable enums fields chunks =
213type Fields =
213type Fields =
214− Map.Map N.Name Int
214+ Map.Map Name.Name Int
217−lookupField :: N.Name -> Fields -> (Int, Fields)
217+lookupField :: Name.Name -> Fields -> (Int, Fields)
218lookupField name fields =
218lookupField name fields =
219 case Map.lookup name fields of
219 case Map.lookup name fields of
220 Just n ->
220 Just n ->
@@ -230,10 +230,10 @@ lookupField name fields =
232type Enums =
232type Enums =
233− Map.Map Word8 (Map.Map N.Name Int)
233+ Map.Map Word8 (Map.Map Name.Name Int)
236−lookupEnum :: Word8 -> N.Name -> Enums -> (Int, Enums)
236+lookupEnum :: Word8 -> Name.Name -> Enums -> (Int, Enums)
237lookupEnum word var allEnums =
237lookupEnum word var allEnums =