on master help sign in
Convert Validation phase from String to Text
99c8f4aEvan Czaplicki
src/Validate.hs+18−16
@@ -1,11 +1,13 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2+{-# LANGUAGE OverloadedStrings #-}
2−module Validate (Result, module') where
3+module Validate (Result, validate) where
3
4
4import Control.Monad (foldM_, when)
5import Control.Monad (foldM_, when)
6+import qualified Data.Foldable as F
5import qualified Data.Map as Map
7import qualified Data.Map as Map
6import qualified Data.Maybe as Maybe
8import qualified Data.Maybe as Maybe
7import qualified Data.Set as Set
9import qualified Data.Set as Set
8−import qualified Data.Foldable as F
10+import Data.Text (Text)
9
11
10import qualified AST.Effects as Effects
12import qualified AST.Effects as Effects
11import qualified AST.Expression.Source as Src
13import qualified AST.Expression.Source as Src
@@ -32,8 +34,8 @@ type Result warning a =
32-- MODULES
34-- MODULES
33
35
34
36
35−module' :: Module.Source -> Result wrn Module.Valid
37+validate :: Module.Source -> Result wrn Module.Valid
36−module' (Module.Module name path info) =
38+validate (Module.Module name path info) =
37 let
39 let
38 (ModuleName.Canonical pkgName _) =
40 (ModuleName.Canonical pkgName _) =
39 name
41 name
@@ -127,7 +129,7 @@ noPorts ports =
127
129
128toManagerType
130toManagerType
129 :: R.Region
131 :: R.Region
130− -> Map.Map String [(R.Region, A.Located String)]
132+ -> Map.Map Text [(R.Region, A.Located Text)]
131 -> Result wrn Effects.ManagerType
133 -> Result wrn Effects.ManagerType
132toManagerType tagRegion settingsDict =
134toManagerType tagRegion settingsDict =
133 let
135 let
@@ -163,9 +165,9 @@ toManagerType tagRegion settingsDict =
163
165
164
166
165extractOne
167extractOne
166− :: String
168+ :: Text
167− -> Map.Map String [(R.Region, A.Located String)]
169+ -> Map.Map Text [(R.Region, A.Located Text)]
168− -> Result wrn (Maybe (A.Located String))
170+ -> Result wrn (Maybe (A.Located Text))
169extractOne name settingsDict =
171extractOne name settingsDict =
170 case Map.lookup name settingsDict of
172 case Map.lookup name settingsDict of
171 Nothing ->
173 Nothing ->
@@ -202,7 +204,7 @@ checkManager tagRegion managerType validDefs =
202 <*> requireRegion tagRegion regionDict "onSelfMsg"
204 <*> requireRegion tagRegion regionDict "onSelfMsg"
203
205
204
206
205−getSimpleDefRegion :: A.Commented Src.ValidDef -> Maybe (String, R.Region)
207+getSimpleDefRegion :: A.Commented Src.ValidDef -> Maybe (Text, R.Region)
206getSimpleDefRegion decl =
208getSimpleDefRegion decl =
207 case decl of
209 case decl of
208 A.A _ (Src.Def region (A.A _ (Pattern.Var name)) _ _) ->
210 A.A _ (Src.Def region (A.A _ (Pattern.Var name)) _ _) ->
@@ -214,7 +216,7 @@ getSimpleDefRegion decl =
214
216
215requireMaps
217requireMaps
216 :: R.Region
218 :: R.Region
217− -> Map.Map String R.Region
219+ -> Map.Map Text R.Region
218 -> Effects.ManagerType
220 -> Effects.ManagerType
219 -> Result wrn ()
221 -> Result wrn ()
220requireMaps tagRegion regionDict managerType =
222requireMaps tagRegion regionDict managerType =
@@ -234,7 +236,7 @@ requireMaps tagRegion regionDict managerType =
234 check "cmdMap" <* check "subMap"
236 check "cmdMap" <* check "subMap"
235
237
236
238
237−requireRegion :: R.Region -> Map.Map String R.Region -> String -> Result wrn R.Region
239+requireRegion :: R.Region -> Map.Map Text R.Region -> Text -> Result wrn R.Region
238requireRegion tagRegion regionDict name =
240requireRegion tagRegion regionDict name =
239 case Map.lookup name regionDict of
241 case Map.lookup name regionDict of
240 Just region ->
242 Just region ->
@@ -438,7 +440,7 @@ validateDefPattern pattern body =
438 Result.throw (R.merge start end) (Error.BadFunctionName (length args))
440 Result.throw (R.merge start end) (Error.BadFunctionName (length args))
439
441
440
442
441−checkArguments :: String -> [Pattern.Raw] -> Result wrn ()
443+checkArguments :: Text -> [Pattern.Raw] -> Result wrn ()
442checkArguments funcName args =
444checkArguments funcName args =
443 let
445 let
444 vars =
446 vars =
@@ -532,7 +534,7 @@ both (expr1, expr2) =
532 (,) <$> expression expr1 <*> expression expr2
534 (,) <$> expression expr1 <*> expression expr2
533
535
534
536
535−checkDuplicateFields :: R.Region -> [(A.Located String, a)] -> Result wrn ()
537+checkDuplicateFields :: R.Region -> [(A.Located Text, a)] -> Result wrn ()
536checkDuplicateFields recordRegion fields =
538checkDuplicateFields recordRegion fields =
537 let
539 let
538 checkDups seenFields ( A.A region field, _ ) =
540 checkDups seenFields ( A.A region field, _ ) =
@@ -598,7 +600,7 @@ checkDuplicates (ValidStuff ports (D.Decls defs unions aliases _)) =
598 ]
600 ]
599
601
600
602
601−detectDuplicates :: (String -> Error.Error) -> [A.Located String] -> Result wrn ()
603+detectDuplicates :: (Text -> Error.Error) -> [A.Located Text] -> Result wrn ()
602detectDuplicates tag names =
604detectDuplicates tag names =
603 let
605 let
604 add (A.A region name) dict =
606 add (A.A region name) dict =
@@ -654,7 +656,7 @@ checkTypeVarsInAlias (A.A (region,_) (D.Type name boundVars tipe)) =
654 (Error.MessyTypeVarsInAlias name boundVars unused unbound)
656 (Error.MessyTypeVarsInAlias name boundVars unused unbound)
655
657
656
658
657−diff :: [String] -> [A.Located String] -> ([String], [String])
659+diff :: [Text] -> [A.Located Text] -> ([Text], [Text])
658diff left right =
660diff left right =
659 let
661 let
660 leftSet =
662 leftSet =
@@ -668,7 +670,7 @@ diff left right =
668 )
670 )
669
671
670
672
671−freeVars :: Type.Raw -> Result wrn [A.Located String]
673+freeVars :: Type.Raw -> Result wrn [A.Located Text]
672freeVars (A.A region tipe) =
674freeVars (A.A region tipe) =
673 case tipe of
675 case tipe of
674 Type.RLambda t1 t2 ->
676 Type.RLambda t1 t2 ->