]> Nishi Git Mirror - gwion.git/commitdiff
:art: Simplify func_match_inner
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Tue, 7 Jul 2020 17:19:36 +0000 (19:19 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Tue, 7 Jul 2020 17:19:36 +0000 (19:19 +0200)
src/parse/check.c

index 1650534bce076b7a0efbca3dfb85c583ecd83713..ed1a2ac145c6bfa7e0ac3f5cdad9313fda2beb84 100644 (file)
@@ -431,17 +431,14 @@ ANN static Type_List mk_type_list(const Env env, const Type type, const loc_t po
 
 ANN static m_bool func_match_inner(const Env env, const Exp e, const Type t,
   const m_bool implicit, const m_bool specific) {
-  const m_bool match = (specific ? e->info->type == t : isa(e->info->type, t) > 0) &&
-    e->info->type->array_depth == t->array_depth &&
-    array_base(e->info->type) == array_base(t);
-    if(!match) {
-      if(e->info->type == env->gwion->type[et_lambda] && is_fptr(env->gwion, t)) {
-        const m_bool ret = check_lambda(env, t, &e->d.exp_lambda);
-        exp_setvar(e, 1);
-        return ret;
-      }
-      if(implicit)
-        return check_implicit(env, e, t);
+  const m_bool match = (specific ? e->info->type == t : isa(e->info->type, t) > 0);
+  if(!match) {
+    if(e->info->type == env->gwion->type[et_lambda] && is_fptr(env->gwion, t)) {
+      exp_setvar(e, 1);
+      return check_lambda(env, t, &e->d.exp_lambda);
+    }
+    if(implicit)
+      return check_implicit(env, e, t);
   }
   return match ? 1 : -1;
 }