From e57c89beecb16d59f449c125085a0d9b75e127f7 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 6 Feb 2025 23:59:13 +0000 Subject: [PATCH] fix: extract retType from KnownType.Func when type-checking function bodies --- src/main/wacc/typeChecker.scala | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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"))) }