on master help sign in
First draft of localizing type names
22a5c27Evan Czaplicki
src/Type/Error.hs+14−8
@@ -12,6 +12,7 @@ module Type.Error
12
12
13import qualified Data.Map as Map
13import qualified Data.Map as Map
14import qualified Data.Maybe as Maybe
14import qualified Data.Maybe as Maybe
15+import Data.Monoid ((<>))
15
16
16import qualified AST.Module.Name as ModuleName
17import qualified AST.Module.Name as ModuleName
17import qualified Elm.Name as N
18import qualified Elm.Name as N
@@ -58,7 +59,17 @@ iteratedDealias tipe =
58-- TO DOC
59-- TO DOC
59
60
60
61
61−type Localizer = Map.Map (ModuleName.Canonical, N.Name) (Maybe N.Name)
62+type Localizer = Map.Map (ModuleName.Canonical, N.Name) String
63+
64+
65+nameToDoc :: Localizer -> ModuleName.Canonical -> N.Name -> H.Doc
66+nameToDoc localizer home@(ModuleName.Canonical _ moduleName) name =
67+ case Map.lookup (home, name) localizer of
68+ Nothing ->
69+ H.nameToDoc moduleName <> "." <> H.nameToDoc name
70+
71+ Just string ->
72+ H.text string
62
73
63
74
64toDoc :: Localizer -> RT.Context -> Type -> H.Doc
75toDoc :: Localizer -> RT.Context -> Type -> H.Doc
@@ -90,7 +101,7 @@ toDoc localizer context tipe =
90
101
91 Type home name args ->
102 Type home name args ->
92 RT.apply context
103 RT.apply context
93− (toLocal localizer home name)
104+ (nameToDoc localizer home name)
94 (map (toDoc localizer RT.App) args)
105 (map (toDoc localizer RT.App) args)
95
106
96 Record fields ext ->
107 Record fields ext ->
@@ -119,15 +130,10 @@ toDoc localizer context tipe =
119
130
120 Alias home name args _ ->
131 Alias home name args _ ->
121 RT.apply context
132 RT.apply context
122− (toLocal localizer home name)
133+ (nameToDoc localizer home name)
123 (map (toDoc localizer RT.App . snd) args)
134 (map (toDoc localizer RT.App . snd) args)
124
135
125
136
126−toLocal :: Localizer -> ModuleName.Canonical -> N.Name -> H.Doc
127−toLocal localizer home name =
128− error "TODO toLocal" localizer home name
129−
130−
131
137
132{-- DIFF
138{-- DIFF
133
139