]> Nishi Git Mirror - gwion.git/commitdiff
:bug: fix lambda calls
authorJérémie Astor <fennecdjay@gmail.com>
Tue, 26 Apr 2022 19:54:13 +0000 (21:54 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Tue, 26 Apr 2022 19:54:13 +0000 (21:54 +0200)
src/parse/check.c
src/parse/partial.c

index f01a3a0bc649b0dab2a774d053d79e54b8129f77..f9a8abc0d1dd0a399d1f3b32612dc3fe3d5f8515 100644 (file)
@@ -763,9 +763,10 @@ ANN static Exp check_lambda_captures(const Env env, const Func_Def fdef) {
 
 ANN static Type check_lambda_call(const Env env, Exp_Call *const exp) {
   const Func_Def fdef = exp->func->d.exp_lambda.def;
+  const bool captures = !!fdef->captures;
   if (exp->args) CHECK_BO(lambda_args_ref(env, exp));
-  const Exp _args = !fdef->captures ? NULL : check_lambda_captures(env, fdef);
-  if(fdef->captures) CHECK_BO(lambda_append_args(env, exp, _args));
+  const Exp _args = !captures ? NULL : check_lambda_captures(env, fdef);
+  if(captures) CHECK_BO(lambda_append_args(env, exp, _args));
   Exp_Lambda *l   = &exp->func->d.exp_lambda;
   Arg_List    args = l->def->base->args;
   Exp         e   = exp->args;
index 7ceb17277865fdd28ee0ec78f60ed1cd0d66c5cc..a539c5978c63b9caca8551af73e53254a15a70ea 100644 (file)
@@ -194,7 +194,7 @@ ANN static Exp expand(const Env env, const Func func, const Exp e, const loc_t l
 
 ANN Type partial_type(const Env env, Exp_Call *const call) {
   const Func base = call->func->type->info->func;
-  if(!base) ERR_O(call->func->pos, _("can't partially apply call a literal lambda"));
+  if(!base) ERR_O(call->func->pos, _("can't do partiall application on a literal lambda"));
   const Func f = partial_match(env, base, call->args, call->func->pos);
   if(!f) {
     const Exp e = expand(env, call->func->type->info->func, call->args, call->func->pos);