]> Nishi Git Mirror - gwion.git/commitdiff
:art: Use typedef flag for pre-defined template function pointer
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 24 May 2020 22:07:15 +0000 (00:07 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sun, 24 May 2020 22:07:15 +0000 (00:07 +0200)
src/parse/check.c
src/parse/scan2.c

index 5a7015652bc4b367dbaf739801dd6b97e50307ed..81b4d5ec51d56d0267bbcd90fd0c143a2c22aac2 100644 (file)
@@ -678,6 +678,7 @@ ANN static Type check_predefined(const Env env, Exp_Call *exp, const Value v, co
       .scope=scope, .flag=ae_flag_check };
     CHECK_BO(envset_push(&es, v->from->owner_class, v->from->owner))
     (void)env_push(env, v->from->owner_class, v->from->owner);
+    SET_FLAG(func->def, typedef);
     const m_bool ret = traverse_func_def(env, func->def);
     if(es.run)
       envset_pop(&es, v->from->owner_class);
index be22079c37b8b309f8d1de1819f88e65ce51fe67..8b066b69b2af64dc8cca4a15b8d5b059fc3c7e69 100644 (file)
@@ -298,7 +298,7 @@ ANN static m_bool scan2_func_def_overload(const Env env, const Func_Def f, const
   const m_bool base = tmpl_base(f->base->tmpl);
   const m_bool tmpl = GET_FLAG(overload, template);
   if(isa(overload->type, env->gwion->type[et_function]) < 0 || is_fptr(env->gwion, overload->type)) {
-    if(isa(overload->type, env->gwion->type[et_class]) < 0)
+    if(!GET_FLAG(f, typedef))
       ERR_B(f->pos, _("function name '%s' is already used by another value"), overload->name)
   }
   if((!tmpl && base) || (tmpl && !base && !GET_FLAG(f, template)))