]> Nishi Git Mirror - gwion.git/commitdiff
:art: Parse coverage
authorfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 8 Oct 2019 11:30:32 +0000 (13:30 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 8 Oct 2019 11:30:32 +0000 (13:30 +0200)
src/parse/scan0.c
src/parse/scan2.c

index fe0d9be8b7b0c088bd67b683b8fa3210b35943f2..9311ef3dcca806663be8b5a0334e49cb62ee3c87 100644 (file)
@@ -129,6 +129,12 @@ ANN static void scan0_implicit_similar(const Env env, const Type lhs, const Type
   opi.op=insert_symbol("$");
   opi.ck = opck_cast_similar;
   add_op(env->gwion, &opi);
+  opi.lhs=rhs;
+  opi.rhs=lhs;
+  add_op(env->gwion, &opi);
+  opi.ck = opck_usr_implicit;
+  opi.op=insert_symbol("@implicit");
+  add_op(env->gwion, &opi);
 }
 
 ANN static void typedef_simple(const Env env, const Type_Def tdef, const Type base) {
index 3604b47ef6b0d67c17549d3a69200eb275ad3716..39ee67a2f4c1c1d352dc846ded112f4614f40a9f 100644 (file)
@@ -46,14 +46,10 @@ ANN m_bool scan2_exp_decl(const Env env, const Exp_Decl* decl) {
 
 ANN static Value arg_value(MemPool p, const Arg_List list) {
   const Var_Decl var = list->var_decl;
-  if(!var->value) {
-    const Value v = new_value(p, list->type, var->xid ? s_name(var->xid) : (m_str)__func__);
-    if(list->td)
-      v->flag = list->td->flag | ae_flag_arg;
-    return v;
-  }
-  var->value->type = list->type;
-  return var->value;
+  const Value v = new_value(p, list->type, var->xid ? s_name(var->xid) : (m_str)__func__);
+  if(list->td)
+    v->flag = list->td->flag | ae_flag_arg;
+  return v;
 }
 
 ANN static m_bool scan2_args(const Env env, const Func_Def f) {
@@ -480,14 +476,11 @@ ANN2(1,2) static m_str func_name(const Env env, const Func_Def f, const Value v)
         s_name(f->base->xid), NULL, v ? ++v->from->offset : 0);
     return s_name(sym);
   }
-  const m_str name = f->base->func ?  f->base->func->name : func_tmpl_name(env, f);
-  return name ?: (m_str)GW_ERROR;
+  return f->base->func ? f->base->func->name : func_tmpl_name(env, f);
 }
 
 ANN2(1,2) m_bool scan2_fdef_std(const Env env, const Func_Def f, const Value overload) {
   const m_str name = func_name(env, f, overload ?: NULL);
-  if((m_int)name <= GW_OK)
-    return (m_bool)(m_uint)name;
   const Func base = f->base->func;
   if(!base)
     CHECK_OB(func_create(env, f, overload, name))