@@ -23,13 +23,14 @@ import qualified Reporting.Result as Result
2323-- VALIDATE DECLARATIONS
2424
2525declarations
26− :: [D.SourceDecl]
26+ :: Bool
27+ -> [D.SourceDecl]
2728 -> Result.Result wrn Error.Error [D.ValidDecl]
28−declarations sourceDecls =
29+declarations isRoot sourceDecls =
2930 do validDecls <- validateDecls sourceDecls
3031 (\_ _ -> validDecls)
3132 <$> declDuplicates validDecls
32− <*> T.traverse checkDecl validDecls
33+ <*> T.traverse (checkDecl isRoot) validDecls
3334
3435
3536validateDecls
@@ -339,8 +340,8 @@ extractValues (A.A region decl) =
339340
340341-- UNBOUND TYPE VARIABLES
341342
342−checkDecl :: D.ValidDecl -> Result.Result wrn Error.Error ()
343−checkDecl (A.A region decl) =
343+checkDecl :: Bool -> D.ValidDecl -> Result.Result wrn Error.Error ()
344+checkDecl isRoot (A.A region decl) =
344345 case decl of
345346 D.Definition _ ->
346347 return ()
@@ -372,7 +373,9 @@ checkDecl (A.A region decl) =
372373 (Error.UnboundTypeVarsInAlias name boundVars v vs tipe)
373374
374375 D.Port _ ->
375− return ()
376+ if isRoot
377+ then return ()
378+ else Result.throw region Error.UnexpectedPort
376379
377380 D.Fixity _ _ _ ->
378381 return ()