on master help sign in
Switch stuff in builder/ over to Data.Name
6940b9fEvan Czaplicki
builder/src/Deps/Cache.hs+7−7
@@ -21,7 +21,7 @@ import Data.Function (on)
21import qualified Data.List as List
21import qualified Data.List as List
22import qualified Data.Map as Map
22import qualified Data.Map as Map
23import Data.Map (Map)
23import Data.Map (Map)
24−import qualified Data.Text as Text
24+import qualified Data.Name as Name
25import System.FilePath ((</>))
25import System.FilePath ((</>))
26
26
27import qualified Elm.Docs as Docs
27import qualified Elm.Docs as Docs
@@ -149,8 +149,8 @@ getVersions name (PackageRegistry _ pkgs) =
149nearbyNames :: Pkg.Name -> [Pkg.Name] -> [Pkg.Name]
149nearbyNames :: Pkg.Name -> [Pkg.Name] -> [Pkg.Name]
150nearbyNames (Pkg.Name author1 project1) possibleNames =
150nearbyNames (Pkg.Name author1 project1) possibleNames =
151 let
151 let
152− authorDist = authorDistance (Text.unpack author1)
152+ authorDist = authorDistance (Name.toString author1)
153− projectDist = projectDistance (Text.unpack project1)
153+ projectDist = projectDistance (Name.toString project1)
154
154
155 addDistance name@(Pkg.Name author2 project2) =
155 addDistance name@(Pkg.Name author2 project2) =
156 ( authorDist author2 + projectDist project2, name )
156 ( authorDist author2 + projectDist project2, name )
@@ -160,17 +160,17 @@ nearbyNames (Pkg.Name author1 project1) possibleNames =
160 map addDistance possibleNames
160 map addDistance possibleNames
161
161
162
162
163−authorDistance :: String -> Text.Text -> Int
163+authorDistance :: String -> Name.Name -> Int
164authorDistance bad possibility =
164authorDistance bad possibility =
165− abs (Suggest.distance bad (Text.unpack possibility))
165+ abs (Suggest.distance bad (Name.toString possibility))
166
166
167
167
168−projectDistance :: String -> Text.Text -> Int
168+projectDistance :: String -> Name.Name -> Int
169projectDistance bad possibility =
169projectDistance bad possibility =
170 if possibility == "elm" || possibility == "elm-explorations" then
170 if possibility == "elm" || possibility == "elm-explorations" then
171 0
171 0
172 else
172 else
173− abs (Suggest.distance bad (Text.unpack possibility))
173+ abs (Suggest.distance bad (Name.toString possibility))
174
174
175
175
176
176
builder/src/Deps/Diff.hs+17−17
@@ -17,13 +17,13 @@ import Control.Monad (zipWithM)
17import Data.Function (on)
17import Data.Function (on)
18import qualified Data.List as List
18import qualified Data.List as List
19import qualified Data.Map as Map
19import qualified Data.Map as Map
20+import qualified Data.Name as Name
20import qualified Data.Set as Set
21import qualified Data.Set as Set
21import qualified Data.Text as Text
22import qualified Data.Text as Text
22
23
23import qualified Elm.Compiler.Module as Module
24import qualified Elm.Compiler.Module as Module
24import qualified Elm.Compiler.Type as Type
25import qualified Elm.Compiler.Type as Type
25import qualified Elm.Docs as Docs
26import qualified Elm.Docs as Docs
26−import qualified Elm.Name as N
27import qualified Elm.Package as Pkg
27import qualified Elm.Package as Pkg
28
28
29
29
@@ -41,10 +41,10 @@ data PackageChanges =
41
41
42data ModuleChanges =
42data ModuleChanges =
43 ModuleChanges
43 ModuleChanges
44− { _unions :: Changes N.Name Docs.Union
44+ { _unions :: Changes Name.Name Docs.Union
45− , _aliases :: Changes N.Name Docs.Alias
45+ , _aliases :: Changes Name.Name Docs.Alias
46− , _values :: Changes N.Name Docs.Value
46+ , _values :: Changes Name.Name Docs.Value
47− , _binops :: Changes N.Name Docs.Binop
47+ , _binops :: Changes Name.Name Docs.Binop
48 }
48 }
49
49
50
50
@@ -144,7 +144,7 @@ isEquivalentBinop (Docs.Binop c1 t1 a1 p1) (Docs.Binop c2 t2 a2 p2) =
144-- DIFF TYPES
144-- DIFF TYPES
145
145
146
146
147−diffType :: Type.Type -> Type.Type -> Maybe [(N.Name,N.Name)]
147+diffType :: Type.Type -> Type.Type -> Maybe [(Name.Name,Name.Name)]
148diffType oldType newType =
148diffType oldType newType =
149 case (oldType, newType) of
149 case (oldType, newType) of
150 (Type.Var oldName, Type.Var newName) ->
150 (Type.Var oldName, Type.Var newName) ->
@@ -192,11 +192,11 @@ diffType oldType newType =
192
192
193
193
194-- handle very old docs that do not use qualified names
194-- handle very old docs that do not use qualified names
195−isSameName :: N.Name -> N.Name -> Bool
195+isSameName :: Name.Name -> Name.Name -> Bool
196isSameName oldFullName newFullName =
196isSameName oldFullName newFullName =
197 let
197 let
198 dedot name =
198 dedot name =
199− reverse (Text.splitOn "." (N.toText name))
199+ reverse (Text.splitOn "." (Name.toText name))
200 in
200 in
201 case ( dedot oldFullName, dedot newFullName ) of
201 case ( dedot oldFullName, dedot newFullName ) of
202 (oldName:[], newName:_) ->
202 (oldName:[], newName:_) ->
@@ -209,7 +209,7 @@ isSameName oldFullName newFullName =
209 oldFullName == newFullName
209 oldFullName == newFullName
210
210
211
211
212−diffFields :: [(N.Name, Type.Type)] -> [(N.Name, Type.Type)] -> Maybe [(N.Name,N.Name)]
212+diffFields :: [(Name.Name, Type.Type)] -> [(Name.Name, Type.Type)] -> Maybe [(Name.Name,Name.Name)]
213diffFields oldRawFields newRawFields =
213diffFields oldRawFields newRawFields =
214 let
214 let
215 sort = List.sortBy (compare `on` fst)
215 sort = List.sortBy (compare `on` fst)
@@ -230,7 +230,7 @@ diffFields oldRawFields newRawFields =
230-- TYPE VARIABLES
230-- TYPE VARIABLES
231
231
232
232
233−isEquivalentRenaming :: [(N.Name,N.Name)] -> Bool
233+isEquivalentRenaming :: [(Name.Name,Name.Name)] -> Bool
234isEquivalentRenaming varPairs =
234isEquivalentRenaming varPairs =
235 let
235 let
236 renamings =
236 renamings =
@@ -263,7 +263,7 @@ isEquivalentRenaming varPairs =
263 allUnique (map snd verifiedRenamings)
263 allUnique (map snd verifiedRenamings)
264
264
265
265
266−compatibleVars :: (N.Name, N.Name) -> Bool
266+compatibleVars :: (Name.Name, Name.Name) -> Bool
267compatibleVars (old, new) =
267compatibleVars (old, new) =
268 case (categorizeVar old, categorizeVar new) of
268 case (categorizeVar old, categorizeVar new) of
269 (CompAppend, CompAppend) -> True
269 (CompAppend, CompAppend) -> True
@@ -285,13 +285,13 @@ data TypeVarCategory
285 | Var
285 | Var
286
286
287
287
288−categorizeVar :: N.Name -> TypeVarCategory
288+categorizeVar :: Name.Name -> TypeVarCategory
289categorizeVar name
289categorizeVar name
290− | N.startsWith "compappend" name = CompAppend
290+ | Name.isCompappendType name = CompAppend
291− | N.startsWith "comparable" name = Comparable
291+ | Name.isComparableType name = Comparable
292− | N.startsWith "appendable" name = Appendable
292+ | Name.isAppendableType name = Appendable
293− | N.startsWith "number" name = Number
293+ | Name.isNumberType name = Number
294− | otherwise = Var
294+ | otherwise = Var
295
295
296
296
297
297
builder/src/Elm/Diff.hs+7−7
@@ -11,6 +11,7 @@ import Control.Monad.Except (liftIO)
11import qualified Data.List as List
11import qualified Data.List as List
12import qualified Data.Map as Map
12import qualified Data.Map as Map
13import qualified Data.Maybe as Maybe
13import qualified Data.Maybe as Maybe
14+import qualified Data.Name as Name
14
15
15import qualified Deps.Cache as Cache
16import qualified Deps.Cache as Cache
16import Deps.Diff (PackageChanges(..), ModuleChanges(..), Changes(..), Magnitude(..))
17import Deps.Diff (PackageChanges(..), ModuleChanges(..), Changes(..), Magnitude(..))
@@ -18,7 +19,6 @@ import qualified Deps.Diff as Diff
18import qualified Elm.Compiler.Module as Module
19import qualified Elm.Compiler.Module as Module
19import qualified Elm.Compiler.Type as Type
20import qualified Elm.Compiler.Type as Type
20import qualified Elm.Docs as Docs
21import qualified Elm.Docs as Docs
21−import qualified Elm.Name as N
22import qualified Elm.Package as Pkg
22import qualified Elm.Package as Pkg
23import qualified Elm.Project as Project
23import qualified Elm.Project as Project
24import qualified Elm.Project.Json as Project
24import qualified Elm.Project.Json as Project
@@ -183,7 +183,7 @@ chunkToDoc (Chunk title magnitude details) =
183 ]
183 ]
184
184
185
185
186−changesToChunk :: L.Localizer -> (N.Name, ModuleChanges) -> Chunk
186+changesToChunk :: L.Localizer -> (Name.Name, ModuleChanges) -> Chunk
187changesToChunk localizer (name, changes@(ModuleChanges unions aliases values binops)) =
187changesToChunk localizer (name, changes@(ModuleChanges unions aliases values binops)) =
188 let
188 let
189 magnitude =
189 magnitude =
@@ -201,7 +201,7 @@ changesToChunk localizer (name, changes@(ModuleChanges unions aliases values bin
201 (binopAdd, binopChange, binopRemove) =
201 (binopAdd, binopChange, binopRemove) =
202 changesToDocTriple (binopToDoc localizer) binops
202 changesToDocTriple (binopToDoc localizer) binops
203 in
203 in
204− Chunk (N.toString name) magnitude $
204+ Chunk (Name.toString name) magnitude $
205 D.vcat $ List.intersperse "" $ Maybe.catMaybes $
205 D.vcat $ List.intersperse "" $ Maybe.catMaybes $
206 [ changesToDoc "Added" unionAdd aliasAdd valueAdd binopAdd
206 [ changesToDoc "Added" unionAdd aliasAdd valueAdd binopAdd
207 , changesToDoc "Removed" unionRemove aliasRemove valueRemove binopRemove
207 , changesToDoc "Removed" unionRemove aliasRemove valueRemove binopRemove
@@ -238,7 +238,7 @@ changesToDoc categoryName unions aliases values binops =
238 D.fromString categoryName <> ":" : unions ++ aliases ++ binops ++ values
238 D.fromString categoryName <> ":" : unions ++ aliases ++ binops ++ values
239
239
240
240
241−unionToDoc :: L.Localizer -> N.Name -> Docs.Union -> D.Doc
241+unionToDoc :: L.Localizer -> Name.Name -> Docs.Union -> D.Doc
242unionToDoc localizer name (Docs.Union _ tvars ctors) =
242unionToDoc localizer name (Docs.Union _ tvars ctors) =
243 let
243 let
244 setup =
244 setup =
@@ -250,7 +250,7 @@ unionToDoc localizer name (Docs.Union _ tvars ctors) =
250 D.hang 4 (D.sep (setup : zipWith (<+>) ("=" : repeat "|") (map ctorDoc ctors)))
250 D.hang 4 (D.sep (setup : zipWith (<+>) ("=" : repeat "|") (map ctorDoc ctors)))
251
251
252
252
253−aliasToDoc :: L.Localizer -> N.Name -> Docs.Alias -> D.Doc
253+aliasToDoc :: L.Localizer -> Name.Name -> Docs.Alias -> D.Doc
254aliasToDoc localizer name (Docs.Alias _ tvars tipe) =
254aliasToDoc localizer name (Docs.Alias _ tvars tipe) =
255 let
255 let
256 declaration =
256 declaration =
@@ -259,12 +259,12 @@ aliasToDoc localizer name (Docs.Alias _ tvars tipe) =
259 D.hang 4 (D.sep [ declaration, typeDoc localizer tipe ])
259 D.hang 4 (D.sep [ declaration, typeDoc localizer tipe ])
260
260
261
261
262−valueToDoc :: L.Localizer -> N.Name -> Docs.Value -> D.Doc
262+valueToDoc :: L.Localizer -> Name.Name -> Docs.Value -> D.Doc
263valueToDoc localizer name (Docs.Value _ tipe) =
263valueToDoc localizer name (Docs.Value _ tipe) =
264 D.hang 4 $ D.sep [ D.fromName name <+> ":", typeDoc localizer tipe ]
264 D.hang 4 $ D.sep [ D.fromName name <+> ":", typeDoc localizer tipe ]
265
265
266
266
267−binopToDoc :: L.Localizer -> N.Name -> Docs.Binop -> D.Doc
267+binopToDoc :: L.Localizer -> Name.Name -> Docs.Binop -> D.Doc
268binopToDoc localizer name (Docs.Binop _ tipe associativity (Docs.Precedence n)) =
268binopToDoc localizer name (Docs.Binop _ tipe associativity (Docs.Precedence n)) =
269 "(" <> D.fromName name <> ")" <+> ":" <+> typeDoc localizer tipe <> D.black details
269 "(" <> D.fromName name <> ")" <+> ":" <+> typeDoc localizer tipe <> D.black details
270 where
270 where
builder/src/Elm/Project.hs+3−3
@@ -12,11 +12,11 @@ module Elm.Project
12
12
13import qualified Data.ByteString as BS
13import qualified Data.ByteString as BS
14import Data.Map ((!))
14import Data.Map ((!))
15+import qualified Data.Name as Name
15import System.FilePath ((</>))
16import System.FilePath ((</>))
16
17
17import qualified Elm.Compiler as Compiler
18import qualified Elm.Compiler as Compiler
18import qualified Elm.Docs as Docs
19import qualified Elm.Docs as Docs
19−import qualified Elm.Name as N
20import qualified Elm.Project.Json as Project
20import qualified Elm.Project.Json as Project
21import qualified Elm.Project.Root as Root
21import qualified Elm.Project.Root as Root
22import qualified Elm.Project.Summary as Summary
22import qualified Elm.Project.Summary as Summary
@@ -73,7 +73,7 @@ compile mode target maybeOutput docs summary@(Summary.Summary root project _ _ _
73-- COMPILE FOR REPL
73-- COMPILE FOR REPL
74
74
75
75
76−compileForRepl :: Bool -> L.Localizer -> BS.ByteString -> Maybe N.Name -> Task.Task (Maybe FilePath)
76+compileForRepl :: Bool -> L.Localizer -> BS.ByteString -> Maybe Name.Name -> Task.Task (Maybe FilePath)
77compileForRepl noColors localizer source maybeName =
77compileForRepl noColors localizer source maybeName =
78 do summary@(Summary.Summary root project _ _ _) <- getRoot
78 do summary@(Summary.Summary root project _ _ _) <- getRoot
79 Project.check project
79 Project.check project
@@ -81,7 +81,7 @@ compileForRepl noColors localizer source maybeName =
81 (dirty, ifaces) <- Plan.plan Nothing summary graph
81 (dirty, ifaces) <- Plan.plan Nothing summary graph
82 answers <- Compile.compile project Nothing ifaces dirty
82 answers <- Compile.compile project Nothing ifaces dirty
83 results <- Artifacts.write root answers
83 results <- Artifacts.write root answers
84− let (Compiler.Artifacts elmi _ _) = results ! N.replModule
84+ let (Compiler.Artifacts elmi _ _) = results ! Name.replModule
85 traverse (Output.generateReplFile noColors localizer summary graph elmi) maybeName
85 traverse (Output.generateReplFile noColors localizer summary graph elmi) maybeName
86
86
87
87
builder/src/File/Find.hs+3−3
@@ -9,12 +9,12 @@ module File.Find
9import Control.Monad.Except (liftIO)
9import Control.Monad.Except (liftIO)
10import qualified Data.Map as Map
10import qualified Data.Map as Map
11import qualified Data.Maybe as Maybe
11import qualified Data.Maybe as Maybe
12+import qualified Data.Name as Name
12import qualified System.FilePath as FP
13import qualified System.FilePath as FP
13import qualified System.Directory as Dir
14import qualified System.Directory as Dir
14import System.FilePath ((</>), (<.>))
15import System.FilePath ((</>), (<.>))
15
16
16import qualified Elm.Compiler.Module as Module
17import qualified Elm.Compiler.Module as Module
17−import qualified Elm.Name as N
18import qualified Elm.Package as Pkg
18import qualified Elm.Package as Pkg
19
19
20import qualified Elm.Project.Json as Project
20import qualified Elm.Project.Json as Project
@@ -48,7 +48,7 @@ find (Summary.Summary root project exposed _ _) origin name =
48 findElm project srcDirs exposed origin name
48 findElm project srcDirs exposed origin name
49
49
50 Project.Pkg _ ->
50 Project.Pkg _ ->
51− if N.startsWith "Elm.Kernel." name then
51+ if Name.isKernel name then
52 if Project.isPlatformPackage project then
52 if Project.isPlatformPackage project then
53 findKernel (toRoot "src") exposed origin name
53 findKernel (toRoot "src") exposed origin name
54 else
54 else
@@ -106,7 +106,7 @@ findKernel srcDir exposed origin name =
106 if client
106 if client
107 then return $ Kernel clientPath (if server then Just serverPath else Nothing)
107 then return $ Kernel clientPath (if server then Just serverPath else Nothing)
108 else
108 else
109− case Map.lookup (N.drop 11 name) exposed of
109+ case Map.lookup (Name.getKernel name) exposed of
110 Just [Pkg.Package pkg _vsn] | pkg == Pkg.core || pkg == Pkg.virtualDom ->
110 Just [Pkg.Package pkg _vsn] | pkg == Pkg.core || pkg == Pkg.virtualDom ->
111 return ForeignKernel
111 return ForeignKernel
112
112
builder/src/Generate/Html.hs+3−4
@@ -8,18 +8,17 @@ module Generate.Html
8
8
9import qualified Data.ByteString.Builder as B
9import qualified Data.ByteString.Builder as B
10import Data.Monoid ((<>))
10import Data.Monoid ((<>))
11+import qualified Data.Name as Name
11import Text.RawString.QQ (r)
12import Text.RawString.QQ (r)
12
13
13−import qualified Elm.Name as N
14−
15
14
16
15
17-- SANDWICH
16-- SANDWICH
18
17
19
18
20−sandwich :: N.Name -> B.Builder -> B.Builder
19+sandwich :: Name.Name -> B.Builder -> B.Builder
21sandwich moduleName javascript =
20sandwich moduleName javascript =
22− let name = N.toBuilder moduleName in
21+ let name = Name.toBuilder moduleName in
23 [r|<!DOCTYPE HTML>
22 [r|<!DOCTYPE HTML>
24<html>
23<html>
25<head>
24<head>
builder/src/Generate/Nitpick.hs+3−3
@@ -5,24 +5,24 @@ module Generate.Nitpick
5
5
6
6
7import qualified Data.Map as Map
7import qualified Data.Map as Map
8+import qualified Data.Name as Name
8import qualified Data.Set as Set
9import qualified Data.Set as Set
9
10
10import qualified AST.Optimized as Opt
11import qualified AST.Optimized as Opt
11import qualified AST.Module.Name as ModuleName
12import qualified AST.Module.Name as ModuleName
12import qualified Elm.Package as Pkg
13import qualified Elm.Package as Pkg
13−import qualified Elm.Name as N
14
14
15
15
16
16
17-- FIND DEBUG USES
17-- FIND DEBUG USES
18
18
19
19
20−findDebugUses :: Pkg.Name -> Opt.Graph -> [N.Name]
20+findDebugUses :: Pkg.Name -> Opt.Graph -> [Name.Name]
21findDebugUses pkg (Opt.Graph _ graph _) =
21findDebugUses pkg (Opt.Graph _ graph _) =
22 Set.toList $ Map.foldrWithKey (addDebugUses pkg) Set.empty graph
22 Set.toList $ Map.foldrWithKey (addDebugUses pkg) Set.empty graph
23
23
24
24
25−addDebugUses :: Pkg.Name -> Opt.Global -> Opt.Node -> Set.Set N.Name -> Set.Set N.Name
25+addDebugUses :: Pkg.Name -> Opt.Global -> Opt.Node -> Set.Set Name.Name -> Set.Set Name.Name
26addDebugUses here (Opt.Global (ModuleName.Canonical pkg home) _) node uses =
26addDebugUses here (Opt.Global (ModuleName.Canonical pkg home) _) node uses =
27 if pkg == here && nodeHasDebug node then
27 if pkg == here && nodeHasDebug node then
28 Set.insert home uses
28 Set.insert home uses
builder/src/Generate/Output.hs+3−3
@@ -17,6 +17,7 @@ import Control.Monad.Trans (liftIO)
17import qualified Data.ByteString.Builder as B
17import qualified Data.ByteString.Builder as B
18import qualified Data.Map as Map
18import qualified Data.Map as Map
19import Data.Monoid ((<>))
19import Data.Monoid ((<>))
20+import qualified Data.Name as Name
20import qualified System.Directory as Dir
21import qualified System.Directory as Dir
21import qualified System.FilePath as FP
22import qualified System.FilePath as FP
22import System.FilePath ((</>))
23import System.FilePath ((</>))
@@ -25,7 +26,6 @@ import qualified Elm.Compiler as Compiler
25import qualified Elm.Compiler.Module as Module
26import qualified Elm.Compiler.Module as Module
26import qualified Elm.Compiler.Objects as Obj
27import qualified Elm.Compiler.Objects as Obj
27import qualified Elm.Interface as I
28import qualified Elm.Interface as I
28−import qualified Elm.Name as N
29import qualified Elm.Package as Pkg
29import qualified Elm.Package as Pkg
30
30
31import qualified AST.Module.Name as ModuleName
31import qualified AST.Module.Name as ModuleName
@@ -166,13 +166,13 @@ generateReplFile
166 -> Summary.Summary
166 -> Summary.Summary
167 -> Crawl.Result
167 -> Crawl.Result
168 -> I.Interface
168 -> I.Interface
169− -> N.Name
169+ -> Name.Name
170 -> Task.Task FilePath
170 -> Task.Task FilePath
171generateReplFile noColors localizer summary@(Summary.Summary _ project _ _ _) graph iface name =
171generateReplFile noColors localizer summary@(Summary.Summary _ project _ _ _) graph iface name =
172 do
172 do
173 objectGraph <- organize summary graph
173 objectGraph <- organize summary graph
174
174
175− let home = Module.Canonical (Project.getName project) N.replModule
175+ let home = Module.Canonical (Project.getName project) Name.replModule
176 let builder = Obj.generateForRepl (not noColors) localizer objectGraph iface home name
176 let builder = Obj.generateForRepl (not noColors) localizer objectGraph iface home name
177
177
178 liftIO $ IO.writeBuilder (Paths.temp "js") $
178 liftIO $ IO.writeBuilder (Paths.temp "js") $