@@ -10,30 +10,33 @@ import qualified AST.Type as T
10import qualified AST.Variable as Var
10import qualified AST.Variable as Var
11import qualified Reporting.Annotation as A
11import qualified Reporting.Annotation as A
12import qualified Reporting.Error.Canonicalize as Error
12import qualified Reporting.Error.Canonicalize as Error
13+import qualified Reporting.Region as R
13import qualified Canonicalize.Result as Result
14import qualified Canonicalize.Result as Result
16-- CHECK FOR PORT
17-- CHECK FOR PORT
19− :: String
21+ -> String
20 -> Maybe Canonical.Expr
22 -> Maybe Canonical.Expr
21 -> T.Canonical
23 -> T.Canonical
22 -> Result.ResultErr D.CanonicalPort
24 -> Result.ResultErr D.CanonicalPort
23−check name maybeExpr rootType =
25+check region name maybeExpr rootType =
24− D.CanonicalPort <$> checkHelp name maybeExpr rootType rootType
26+ D.CanonicalPort <$> checkHelp region name maybeExpr rootType rootType
28− :: String
31+ -> String
29 -> Maybe Canonical.Expr
32 -> Maybe Canonical.Expr
30 -> T.Canonical
33 -> T.Canonical
31 -> T.Canonical
34 -> T.Canonical
32 -> Result.ResultErr (E.PortImpl Canonical.Expr T.Canonical)
35 -> Result.ResultErr (E.PortImpl Canonical.Expr T.Canonical)
33−checkHelp name maybeExpr rootType tipe =
36+checkHelp region name maybeExpr rootType tipe =
34 case (maybeExpr, tipe) of
37 case (maybeExpr, tipe) of
35 (_, T.Aliased _ args t) ->
38 (_, T.Aliased _ args t) ->
36− checkHelp name maybeExpr rootType (T.dealias args t)
39+ checkHelp region name maybeExpr rootType (T.dealias args t)
38 (Just expr, T.App (T.Type task) [ _x, _a ])
41 (Just expr, T.App (T.Type task) [ _x, _a ])
39 | Var.isTask task ->
42 | Var.isTask task ->
@@ -50,37 +53,38 @@ checkHelp name maybeExpr rootType tipe =
50 case maybeExpr of
53 case maybeExpr of
51 Nothing ->
54 Nothing ->
52 const (E.In name (T.Signal rootType arg))
55 const (E.In name (T.Signal rootType arg))
53− <$> validForeignType name True arg arg
56+ <$> validForeignType region name True arg arg
55 Just expr ->
58 Just expr ->
56 const (E.Out name expr (T.Signal rootType arg))
59 const (E.Out name expr (T.Signal rootType arg))
57− <$> validForeignType name False arg arg
60+ <$> validForeignType region name False arg arg
60 case maybeExpr of
63 case maybeExpr of
61 Nothing ->
64 Nothing ->
62 const (E.In name (T.Normal rootType))
65 const (E.In name (T.Normal rootType))
63− <$> validForeignType name True rootType tipe
66+ <$> validForeignType region name True rootType tipe
65 Just expr ->
68 Just expr ->
66 const (E.Out name expr (T.Normal rootType))
69 const (E.Out name expr (T.Normal rootType))
67− <$> validForeignType name False rootType tipe
70+ <$> validForeignType region name False rootType tipe
70-- CHECK INBOUND AND OUTBOUND TYPES
73-- CHECK INBOUND AND OUTBOUND TYPES
72validForeignType
75validForeignType
73− :: String
77+ -> String
75 -> T.Canonical
79 -> T.Canonical
76 -> T.Canonical
80 -> T.Canonical
77 -> Result.ResultErr ()
81 -> Result.ResultErr ()
78−validForeignType name isInbound rootType tipe =
82+validForeignType region name isInbound rootType tipe =
79 let valid localType =
83 let valid localType =
80− validForeignType name isInbound rootType localType
84+ validForeignType region name isInbound rootType localType
82 err problem =
86 err problem =
83− Result.err $ A.A undefined $
87+ Result.err $ A.A region $
84 Error.port name isInbound rootType tipe problem
88 Error.port name isInbound rootType tipe problem
86 case tipe of
90 case tipe of