diff --git a/src/main/wacc/typeChecker.scala b/src/main/wacc/typeChecker.scala index e79790e..9e86b58 100644 --- a/src/main/wacc/typeChecker.scala +++ b/src/main/wacc/typeChecker.scala @@ -74,10 +74,13 @@ object typeChecker { ctx: TypeCheckerCtx ): Unit = { prog.funcs.foreach { case FuncDecl(_, name, _, stmts) => - val retType = ctx.typeOf(name) - stmts.toList.foreach( - checkStmt(_, Constraint.Is(retType, s"function ${name.v} must return $retType")) - ) + ctx.typeOf(name) match { + case KnownType.Func(retType, _) => + stmts.toList.foreach( + checkStmt(_, Constraint.Is(retType, s"function ${name.v} must return $retType")) + ) + case _ => ctx.error(Error.InternalError(name.pos, "function declaration with non-function")) + } } prog.main.toList.foreach(checkStmt(_, Constraint.Never("main function must not return"))) }