]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve op
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 5 Jul 2019 15:13:30 +0000 (17:13 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 5 Jul 2019 15:13:30 +0000 (17:13 +0200)
include/operator.h
src/lib/import.c
src/oo/env.c
src/parse/operator.c
src/parse/scan2.c

index 4ce202405bfda469fde326a1000a413e7cc201c7..a54b8d101f56c30494d88a1e11d4811dd862f90e 100644 (file)
@@ -25,5 +25,4 @@ ANN Type   op_check(const Env, struct Op_Import*);
 ANN m_bool op_emit(const Emitter, const struct Op_Import*);
 ANN m_bool operator_set_func(const struct Op_Import*);
 ANN void free_op_map(Map map, struct Gwion_* gwion);
-ANN m_bool env_add_op(const Env, const struct Op_Import*);
 #endif
index 37cc506d0a5a9d925e6453b85c0cf058771d99a6..15c8bb3a3855a43583555a7d49defa9a9125d98f 100644 (file)
@@ -483,7 +483,7 @@ ANN2(1,2) static int import_op(const Gwi gwi, const DL_Oper* op,
   const Type ret = get_type(env, op->ret);
   const struct Op_Import opi = { lhs, rhs, ret,
     op->ck, op->em, (uintptr_t)f, gwi->loc, op->op };
-  return env_add_op(env, &opi);
+  return add_op(gwi->gwion, &opi);
 }
 
 
index 65d823d48b5852bbd782f18f2c3a474bd0425265..2550d82037fc69dd96f1703ca94d2486583a1499 100644 (file)
@@ -116,9 +116,3 @@ ANN m_bool type_engine_check_prog(const Env env, const Ast ast) {
   unload_context(ctx, env);
   return ret;
 }
-
-ANN m_bool env_add_op(const Env env, const struct Op_Import* opi) {
-  if(!env->curr->info->op_map.ptr)
-    map_init(&env->curr->info->op_map);
-  return add_op(env->gwion, opi);
-}
index eb24ba42e27652b1e2f3ef7f0e31086615b308b0..c73f51422461626d8b332f8f9a87fe025c6cdffd 100644 (file)
@@ -116,6 +116,8 @@ ANN m_bool add_op(const Gwion gwion, const struct Op_Import* opi) {
     struct OpChecker ock = { gwion->env, &n->info->op_map, opi, 0 };
     CHECK_BB(op_exist(&ock, n))
   } while((n = n->parent));
+  if(!gwion->env->curr->info->op_map.ptr)
+    map_init(&gwion->env->curr->info->op_map);
   struct OpChecker ock = { gwion->env, &gwion->env->curr->info->op_map, opi, 0 };
   const Vector v = op_vector(gwion->mp, &ock);
   const M_Operator* mo = new_mo(gwion->mp, opi);
index 25b536afe4db40d06d3cb94885ec12ac97158052..576ac8a93a604d11ee976ccd96cf2ad2e51262f3 100644 (file)
@@ -412,7 +412,7 @@ ANN static m_bool scan2_func_def_op(const Env env, const Func_Def f) {
   const Type r = GET_FLAG(f, unary) ? f->base->args->var_decl->value->type :
     f->base->args->next ? f->base->args->next->var_decl->value->type : NULL;
   struct Op_Import opi = { .op=op, .lhs=l, .rhs=r, .ret=f->base->ret_type, .pos=f->pos };
-  CHECK_BB(env_add_op(env, &opi))
+  CHECK_BB(add_op(env->gwion, &opi))
   return GW_OK;
 }