@@ -7,6 +7,8 @@ import qualified Data.Map as Map
77import qualified Data.Maybe as Maybe
88import qualified Data.Set as Set
99import qualified Data.Foldable as T
10+import qualified Data.Text as Text
11+import Data.Text (Text)
1012
1113import Elm.Utils ((|>))
1214
@@ -78,7 +80,7 @@ module' allCanonicalImports interfaces modul =
7880 canonicalDecls
7981
8082 centralizedDocs =
81− A.map (fmap (Docs.centralize canonicalDecls)) docs
83+ fmap (A.map (Docs.centralize canonicalDecls)) docs
8284
8385 typeToPair (A.A _ (D.Type name args body)) =
8486 ( name, (args, body) )
@@ -88,7 +90,7 @@ module' allCanonicalImports interfaces modul =
8890 in
8991 do program <- Result.mapError Error.Canonicalize getProgram
9092 canonicalImports <- filterImports uses imports
91− Result.accumulate (Result.One (Env.toDealiaser env)) $
93+ Result.accumulate (Result.One (Env.toLocalizer env)) $
9294 modul {
9395 Module.info =
9496 Module.Info
@@ -164,7 +166,7 @@ resolveExports fullList (Var.Listing partialList open) =
164166 <*> allUnique partialList
165167
166168
167−getValueExport :: [String] -> Set.Set String -> A.Located String -> CResult Var.Value
169+getValueExport :: [Text] -> Set.Set Text -> A.Located Text -> CResult Var.Value
168170getValueExport allValues allValuesSet (A.A region name) =
169171 if Set.member name allValuesSet then
170172 Result.ok (Var.Value name)
@@ -172,7 +174,7 @@ getValueExport allValues allValuesSet (A.A region name) =
172174 manyNotFound region [name] allValues
173175
174176
175−getAliasExport :: [String] -> [String] -> [String] -> A.Located String -> CResult [Var.Value]
177+getAliasExport :: [Text] -> [Text] -> [Text] -> A.Located Text -> CResult [Var.Value]
176178getAliasExport allValues allAliases adtTypes (A.A region alias) =
177179 if alias `elem` allAliases then
178180
@@ -189,9 +191,9 @@ getAliasExport allValues allAliases adtTypes (A.A region alias) =
189191
190192
191193getAdtExport
192− :: [(String, Var.Listing String)]
193− -> [String]
194− -> A.Located (String, Var.Listing String)
194+ :: [(Text, Var.Listing Text)]
195+ -> [Text]
196+ -> A.Located (Text, Var.Listing Text)
195197 -> CResult Var.Value
196198getAdtExport allAdts adtTypes (A.A region (name, Var.Listing ctors open)) =
197199 case List.lookup name allAdts of
@@ -209,21 +211,25 @@ getAdtExport allAdts adtTypes (A.A region (name, Var.Listing ctors open)) =
209211 manyNotFound region unfoundCtors allCtors
210212
211213
212−manyNotFound :: Region.Region -> [String] -> [String] -> CResult a
214+manyNotFound :: Region.Region -> [Text] -> [Text] -> CResult a
213215manyNotFound region nameList possibilities =
214216 Result.throwMany (map (notFound region possibilities) nameList)
215217
216218
217−notFound :: Region.Region -> [String] -> String -> A.Located CError.Error
218−notFound region possibilities name =
219− A.A region $ CError.Export name $
220− ErrorHelp.nearbyNames id name possibilities
219+notFound :: Region.Region -> [Text] -> Text -> A.Located CError.Error
220+notFound region possibilities badName =
221+ let
222+ badNameString =
223+ Text.unpack badName
224+ in
225+ A.A region $ CError.Export badNameString $
226+ ErrorHelp.nearbyNames id badNameString (map Text.unpack possibilities)
221227
222228
223229allUnique :: [A.Located Var.Value] -> CResult ()
224230allUnique statedExports =
225231 let
226− valueToString value =
232+ valueToText value =
227233 case value of
228234 Var.Value name -> name
229235 Var.Alias name -> name
@@ -235,7 +241,7 @@ allUnique statedExports =
235241 isUnique value allRegions =
236242 case allRegions of
237243 region : _ : _ ->
238− Result.throw region (CError.DuplicateExport (valueToString value))
244+ Result.throw region (CError.DuplicateExport (valueToText value))
239245
240246 _ ->
241247 Result.ok ()
@@ -284,7 +290,7 @@ maybeUnzip3 tuples =
284290
285291splitValue
286292 :: Var.Value
287− -> ( Maybe String, Maybe String, Maybe (String, Var.Listing String) )
293+ -> ( Maybe Text, Maybe Text, Maybe (Text, Var.Listing Text) )
288294splitValue value =
289295 case value of
290296 Var.Value name ->
@@ -300,9 +306,9 @@ splitValue value =
300306splitLocatedValue
301307 :: A.Located Var.Value
302308 ->
303− ( Maybe (A.Located String)
304− , Maybe (A.Located String)
305− , Maybe (A.Located (String, Var.Listing String))
309+ ( Maybe (A.Located Text)
310+ , Maybe (A.Located Text)
311+ , Maybe (A.Located (Text, Var.Listing Text))
306312 )
307313splitLocatedValue (A.A region value) =
308314 case value of
@@ -414,7 +420,9 @@ canonicalizeExpr env (A.A region validExpr) =
414420 C.Var <$> Canon.variable region env x
415421
416422 Src.Ctor name exprs ->
417− C.Ctor name <$> traverse go exprs
423+ C.Ctor
424+ <$> Canon.variable region env name
425+ <*> traverse go exprs
418426
419427 Src.List exprs ->
420428 C.List <$> traverse go exprs
@@ -433,8 +441,8 @@ canonicalizeExpr env (A.A region validExpr) =
433441
434442canonicalizeFields
435443 :: Env.Env
436− -> (A.Located String, Src.ValidExpr)
437− -> CResult (String, C.Expr)
444+ -> (A.Located Text, Src.ValidExpr)
445+ -> CResult (Text, C.Expr)
438446canonicalizeFields env (A.A _ key, expr) =
439447 (\value -> (key, value)) <$> canonicalizeExpr env expr
440448
@@ -462,8 +470,8 @@ canonicalizePattern env (A.A region ptrn) =
462470 P.Alias x p ->
463471 P.Alias x <$> canonicalizePattern env p
464472
465− P.Data (Var.Raw name) patterns ->
466− P.Data
473+ P.Ctor (Var.Raw name) patterns ->
474+ P.Ctor
467475 <$> Canon.pvar region env name (length patterns)
468476 <*> traverse (canonicalizePattern env) patterns
469477
@@ -475,7 +483,7 @@ canonicalizePattern env (A.A region ptrn) =
475483canonicalizeBinop
476484 :: Region.Region
477485 -> Env.Env
478− -> [(Src.ValidExpr, A.Located String)]
486+ -> [(Src.ValidExpr, A.Located Text)]
479487 -> Src.ValidExpr
480488 -> CResult C.Expr'
481489canonicalizeBinop region env srcOps srcLast =
@@ -490,7 +498,7 @@ canonicalizeBinop region env srcOps srcLast =
490498 A.drop <$> Binops.flatten region expr ops
491499
492500
493−binopHelp :: Env.Env -> (Src.ValidExpr, A.Located String) -> CResult (C.Expr, Binops.Op)
501+binopHelp :: Env.Env -> (Src.ValidExpr, A.Located Text) -> CResult (C.Expr, Binops.Op)
494502binopHelp env (expr, op) =
495503 (,)
496504 <$> canonicalizeExpr env expr