]> Nishi Git Mirror - gwion.git/commitdiff
Improve non matching func => fptr message
authorfennecdjay <fennecdjay@gmail.com>
Mon, 9 Jan 2023 23:32:57 +0000 (00:32 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Mon, 9 Jan 2023 23:32:57 +0000 (00:32 +0100)
src/lib/closure.c

index bf880f0d0b55f118cd018f368040f7dff12b52e3..27fc4a1232c186fbbd3303a263cac2e6bf353a8e 100644 (file)
@@ -70,7 +70,13 @@ static OP_CHECK(opck_func_call) {
 
 static OP_CHECK(opck_fptr_call) {
   Exp_Binary *bin  = (Exp_Binary *)data;
-  return mk_call(env, exp_self(bin), bin->rhs, bin->lhs);
+  const Type t = mk_call(env, exp_self(bin), bin->rhs, bin->lhs);
+  if (t == env->gwion->type[et_error]) {
+    gwerr_basic("no matching argument of funptr call", "invalid call", "did you mean to use {+}:=>{0}", env->name, exp_self(bin)->pos, 0);
+    env->context->error = true;
+    return env->gwion->type[et_error];
+  }
+  return t;
 }
 
 ANN Type upvalue_type(const Env env, Capture *cap) {