]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix templating error handling
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 12 Apr 2019 09:52:42 +0000 (11:52 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 12 Apr 2019 09:52:42 +0000 (11:52 +0200)
src/gwion.c
src/parse/check.c

index f1888826f38d099808751534de372481ae921a87..6086af3e4cb7f1bd0d33e922f594dbe5bd4680f3 100644 (file)
@@ -104,7 +104,7 @@ ANN void env_err(const Env env, const uint pos, const m_str fmt, ...) {
   gw_err("in file: '%s'\n", env->name);
   if(env->class_def)
     gw_err("in class: '%s'\n", env->class_def->name);
-  if(env->func) // problem with scan1 FAKE_FUNC
+  if(env->func)
     gw_err("in function: '%s'\n", env->func->name);
   if(pos)
     fprintf(stderr, "line: %u\t", pos);
index 85369e0316a876320f1d1742531925517ad74008..3aa5b6b019ee1fe7c0bd2c0e9048f75d75f4a7f1 100644 (file)
@@ -408,7 +408,7 @@ ANN static inline Value template_get_ready(const Env env, const Value v, const m
 ANN static Func _find_template_match(const Env env, const Value v, const Exp_Call* exp) {
   const Exp args = exp->args;
   const Type_List types = exp->tmpl->types;
-  Func m_func = exp->m_func;
+  Func m_func = exp->m_func, former = env->func;
   const m_str tmpl_name = tl2str(env, types);
   const m_uint scope = env_push(env, v->owner_class, v->owner);
   for(m_uint i = 0; i < v->offset + 1; ++i) {
@@ -455,6 +455,7 @@ ANN static Func _find_template_match(const Env env, const Value v, const Exp_Cal
 end:
   free(tmpl_name);
   env_pop(env, scope);
+  env->func = former;
   return m_func;
 }
 ANN Func find_template_match(const Env env, const Value value, const Exp_Call* exp) {