From c8ceff321097cb6b35ce472f3530d4b22ca50bca Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Thu, 11 Jul 2024 16:39:19 +0200 Subject: [PATCH] Type check arrow type expressions --- src/Checker.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Checker.cc b/src/Checker.cc index 3561ec4f2..24c3b096f 100644 --- a/src/Checker.cc +++ b/src/Checker.cc @@ -336,6 +336,19 @@ std::tuple Checker::inferTypeExpr(TypeEnv& Env, TypeExpres break; } + case NodeKind::ArrowTypeExpression: + { + auto Arrow = static_cast(TE); + auto [ReturnOut, ReturnTy] = inferTypeExpr(Env, Arrow->ReturnType); + Ty = ReturnTy; + for (auto PT: Arrow->ParamTypes) { + auto [ParamOut, ParamTy] = inferTypeExpr(Env, PT); + mergeTo(Out, ParamOut); + Ty = new TFun(ParamTy, Ty); + } + break; + } + default: ZEN_UNREACHABLE