@@ -20,8 +20,10 @@ import qualified Reporting.Region as R
20import qualified Reporting.Result as Result
20import qualified Reporting.Result as Result
23-- VALIDATE DECLARATIONS
24-- VALIDATE DECLARATIONS
25declarations
27declarations
27 -> [D.SourceDecl]
29 -> [D.SourceDecl]
@@ -78,8 +80,10 @@ validateDeclsHelp comment (A.A region decl) decls =
78 portHelp comment region port decls
80 portHelp comment region port decls
81-- VALIDATE DEFINITIONS IN DECLARATIONS
84-- VALIDATE DEFINITIONS IN DECLARATIONS
84 :: Maybe String
88 :: Maybe String
85 -> Source.Def
89 -> Source.Def
@@ -111,8 +115,10 @@ defHelp comment (A.A region def) decls =
111 Result.throw region (Error.TypeWithoutDefinition name)
115 Result.throw region (Error.TypeWithoutDefinition name)
114-- VALIDATE PORTS IN DECLARATIONS
119-- VALIDATE PORTS IN DECLARATIONS
117 :: Maybe String
123 :: Maybe String
118 -> R.Region
124 -> R.Region
@@ -140,8 +146,10 @@ portHelp comment region port decls =
140 addRest (D.In name tipe) decls
146 addRest (D.In name tipe) decls
143-- VALIDATE DEFINITIONS
150-- VALIDATE DEFINITIONS
145definitions :: [Source.Def] -> Result.Result wrn Error.Error [Valid.Def]
153definitions :: [Source.Def] -> Result.Result wrn Error.Error [Valid.Def]
146definitions sourceDefs =
154definitions sourceDefs =
147 do validDefs <- definitionsHelp sourceDefs
155 do validDefs <- definitionsHelp sourceDefs
@@ -194,8 +202,10 @@ checkDefinition (Valid.Definition pattern body _) =
194 Result.throw (R.merge start end) (Error.BadFunctionName (length args))
202 Result.throw (R.merge start end) (Error.BadFunctionName (length args))
197-- VALIDATE EXPRESSIONS
206-- VALIDATE EXPRESSIONS
199expression :: Source.Expr -> Result.Result wrn Error.Error Valid.Expr
209expression :: Source.Expr -> Result.Result wrn Error.Error Valid.Expr
200expression (A.A ann sourceExpression) =
210expression (A.A ann sourceExpression) =
201 A.A ann <$>
211 A.A ann <$>
@@ -300,16 +310,20 @@ both (expr1, expr2) =
300 (,) <$> expression expr1 <*> expression expr2
310 (,) <$> expression expr1 <*> expression expr2
303-- VALIDATE PATTERNS
314-- VALIDATE PATTERNS
305validatePattern :: Pattern.RawPattern -> Result.Result wrn Error.Error Pattern.RawPattern
317validatePattern :: Pattern.RawPattern -> Result.Result wrn Error.Error Pattern.RawPattern
306validatePattern pattern =
318validatePattern pattern =
307 do detectDuplicates Error.BadPattern (Pattern.boundVars pattern)
319 do detectDuplicates Error.BadPattern (Pattern.boundVars pattern)
308 return pattern
320 return pattern
311-- DETECT DUPLICATES
324-- DETECT DUPLICATES
313detectDuplicates
327detectDuplicates
314 :: (String -> Error.Error)
328 :: (String -> Error.Error)
315 -> [A.Located String]
329 -> [A.Located String]
@@ -383,8 +397,10 @@ extractValues (A.A (region, _) decl) =
386-- UNBOUND TYPE VARIABLES
401-- UNBOUND TYPE VARIABLES
388checkDecl :: Bool -> D.ValidDecl -> Result.Result wrn Error.Error ()
404checkDecl :: Bool -> D.ValidDecl -> Result.Result wrn Error.Error ()
389checkDecl isRoot (A.A (region,_) decl) =
405checkDecl isRoot (A.A (region,_) decl) =
390 case decl of
406 case decl of