]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve operator definition
authorJérémie Astor <fennecdjay@gmail.com>
Wed, 30 Dec 2020 21:57:08 +0000 (22:57 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Wed, 30 Dec 2020 21:57:08 +0000 (22:57 +0100)
src/parse/check.c

index f4985edc1a797b7448d858ff586dca77b9f29cf0..8c62044e089d4b01cb1a0da71db2f9224b131fb3 100644 (file)
@@ -1202,7 +1202,10 @@ ANN static m_bool check_func_overload(const Env env, const Func_Def fdef) {
     const Func f1 = get_overload(env, fdef, i);
     for(m_uint j = i + 1; f1 && j <= v->from->offset; ++j) {
       const Func f2 = get_overload(env, fdef, j);
-      if(f2 && compat_func(f1->def, f2->def) > 0)
+      if(f2 && compat_func(f1->def, f2->def) > 0 &&
+          fbflag(f1->def->base, fbflag_op) == fbflag(f2->def->base, fbflag_op) &&
+          fbflag(f1->def->base, fbflag_unary) == fbflag(f2->def->base, fbflag_unary) &&
+          fbflag(f1->def->base, fbflag_postfix) == fbflag(f2->def->base, fbflag_postfix))
         ERR_B(f2->def->base->td->pos, _("global function '%s' already defined"
           " for those arguments"), s_name(fdef->base->xid))
     }