@@ -23,13 +23,14 @@ import qualified Reporting.Result as Result
23-- VALIDATE DECLARATIONS
23-- VALIDATE DECLARATIONS
25declarations
25declarations
26− :: [D.SourceDecl]
27+ -> [D.SourceDecl]
27 -> Result.Result wrn Error.Error [D.ValidDecl]
28 -> Result.Result wrn Error.Error [D.ValidDecl]
28−declarations sourceDecls =
29+declarations isRoot sourceDecls =
29 do validDecls <- validateDecls sourceDecls
30 do validDecls <- validateDecls sourceDecls
30 (\_ _ -> validDecls)
31 (\_ _ -> validDecls)
31 <$> declDuplicates validDecls
32 <$> declDuplicates validDecls
32− <*> T.traverse checkDecl validDecls
33+ <*> T.traverse (checkDecl isRoot) validDecls
35validateDecls
36validateDecls
@@ -339,8 +340,8 @@ extractValues (A.A region decl) =
340-- UNBOUND TYPE VARIABLES
341-- UNBOUND TYPE VARIABLES
342−checkDecl :: D.ValidDecl -> Result.Result wrn Error.Error ()
343+checkDecl :: Bool -> D.ValidDecl -> Result.Result wrn Error.Error ()
343−checkDecl (A.A region decl) =
344+checkDecl isRoot (A.A region decl) =
344 case decl of
345 case decl of
345 D.Definition _ ->
346 D.Definition _ ->
346 return ()
347 return ()
@@ -372,7 +373,9 @@ checkDecl (A.A region decl) =
372 (Error.UnboundTypeVarsInAlias name boundVars v vs tipe)
373 (Error.UnboundTypeVarsInAlias name boundVars v vs tipe)
374 D.Port _ ->
375 D.Port _ ->
375− return ()
377+ then return ()
378+ else Result.throw region Error.UnexpectedPort
377 D.Fixity _ _ _ ->
380 D.Fixity _ _ _ ->
378 return ()
381 return ()