]> Nishi Git Mirror - gwion.git/commitdiff
Revert ":art: More fixes and tests"
authorfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 9 Jul 2019 17:30:19 +0000 (19:30 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 9 Jul 2019 17:30:19 +0000 (19:30 +0200)
This reverts commit 6b5edd67af9eac6749e66ce4bfc7b9223040d69a.

25 files changed:
src/arg.gcda
src/arg.gcno
src/compile.gcda
src/compile.gcno
src/gwion.gcda
src/gwion.gcno
src/gwiondata.gcda
src/gwiondata.gcno
src/lib/func.c
src/main.gcda
src/main.gcno
src/parse/check.c
src/parse/scan1.c
src/parse/scan2.c
src/plug.gcda
src/plug.gcno
src/soundinfo.gcda
src/soundinfo.gcno
tests/import/driver.so [new file with mode: 0755]
tests/import/test.log
tests/tree/array_cast.gw [deleted file]
tests/tree/did_you_mean_type.gw [deleted file]
tests/tree/push_func.gw [deleted file]
tests/tree/reddit.gw [deleted file]
tests/tree/template_fptr.gw [deleted file]

index bf449aee3bb98e1109a43e981caf545abf9770ed..3dcc1be1753c780ac1b0ff78b7b65572a2dfe459 100644 (file)
Binary files a/src/arg.gcda and b/src/arg.gcda differ
index 38f07084fca7019cdcc9d8b42711f16f1dc25302..4b9a987eaf14c13cdb1d160100447e72f66e3b4f 100644 (file)
Binary files a/src/arg.gcno and b/src/arg.gcno differ
index 6b4cdd62b09f824fbb385e7b9ea57c664dd612ed..d73115463110ad3aed16bf365cc7e9d9d73388bd 100644 (file)
Binary files a/src/compile.gcda and b/src/compile.gcda differ
index d69f6e16d049a3a6ee5d49c30f94952f5d111535..411f835521e342beb33934f7affbac0107de2acd 100644 (file)
Binary files a/src/compile.gcno and b/src/compile.gcno differ
index 1a44e2f8051c62d0fbb2ef87c6445a97ca50c154..d0363d621ff30e26039326b7591b3bae83827d39 100644 (file)
Binary files a/src/gwion.gcda and b/src/gwion.gcda differ
index db0a66d4ed87b7ea57a2b8bb23b7fb77e8e1380b..6c8e11e1b66f55d2bb4a97b733c50f5c39f6e6de 100644 (file)
Binary files a/src/gwion.gcno and b/src/gwion.gcno differ
index 74199b69bc0c1cab507e6dbb248905b7b07ff7dc..8a97751765194fc59d80ca21f0ac4c42d5dbc03b 100644 (file)
Binary files a/src/gwiondata.gcda and b/src/gwiondata.gcda differ
index 83192df2f47fc818f887bcdf783e3cac80749e74..5f90c6e373d2a3315ffbc57c9c4e74abd14f808a 100644 (file)
Binary files a/src/gwiondata.gcno and b/src/gwiondata.gcno differ
index 657d336d947a9235413b16167861bee0f6573448..4d8cc62b97818bacfcd9e1a256813ae9ea1b7c23 100644 (file)
@@ -67,20 +67,20 @@ struct FptrInfo {
 ANN static m_bool fptr_tmpl_push(const Env env, struct FptrInfo *info) {
   if(!info->rhs->def->base->tmpl)
     return GW_OK;
+// some kind of template_match ?
   ID_List t0 = info->lhs->def->base->tmpl->list,
           t1 = info->rhs->def->base->tmpl->list;
-  nspc_push_type(env->gwion->mp, env->curr);
+nspc_push_type(env->gwion->mp, env->curr);
   while(t0) {
-   if(!t1) {
-     nspc_pop_type(env->gwion->mp, env->curr);
-     return GW_ERROR;
-   }
-   nspc_add_type(env->curr, t0->xid, t_undefined);
-   nspc_add_type(env->curr, t1->xid, t_undefined);
+//    CHECK_OB(t1)
+nspc_add_type(env->curr, t0->xid, t_undefined);//
+nspc_add_type(env->curr, t1->xid, t_undefined);//
     t0 = t0->next;
     t1 = t1->next;
   }
-  return GW_OK;
+//  CHECK_BB(template_push_types(env, info->lhs->def->base->tmpl))
+//  return template_push_types(env, info->rhs->def->base->tmpl);
+return GW_OK;//
 }
 
 
@@ -146,8 +146,10 @@ ANN static Type fptr_type(const Env env, struct FptrInfo *info) {
       if(fptr_rettype(env, info) > 0 &&
            fptr_arity(info) && fptr_args(env, base) > 0)
       type = info->lhs->value_ref->type;
-      if(info->rhs->def->base->tmpl)
+      if(info->rhs->def->base->tmpl) {
+//        nspc_pop_type(env->gwion->mp, env->curr);
         nspc_pop_type(env->gwion->mp, env->curr);
+      }
     }
   }
   return type;
index 5fce5e273cbc5a4c320d35f4b7d7335ac40cc5aa..1bd518d875d6a85a3783cde2156e2b4266bc65cf 100644 (file)
Binary files a/src/main.gcda and b/src/main.gcda differ
index d737dff5e3aeae9fc2fd71b8cb1a081c96243d42..6293d5742f6d765c65ca83ec7a7aea76df4d6def 100644 (file)
Binary files a/src/main.gcno and b/src/main.gcno differ
index f20143abf45ccb1e4b1014a83e1de670944bfc3f..a3e565ebf88f28337c5002db983e9ef4aced3fca 100644 (file)
@@ -367,7 +367,9 @@ ANN2(1,2) static Func find_func_match_actual(const Env env, Func func, const Exp
         CHECK_OO(func->next);
         return find_func_match_actual(env, func->next, args, implicit, specific);
       }
-      if(e1->type == t_undefined || (GET_FLAG(func, template) && is_fptr(func->value_ref->type))) {
+      if(e1->type == t_undefined ||
+(GET_FLAG(func, template) && isa(actual_type(func->value_ref->type), t_fptr) > 0)
+) {
         if(func->value_ref->owner_class)
           CHECK_BO(template_push_types(env, func->value_ref->owner_class->e->def->base.tmpl))
         e1->type = known_type(env, e1->td);
@@ -379,6 +381,7 @@ ANN2(1,2) static Func find_func_match_actual(const Env env, Func func, const Exp
       e = e->next;
       e1 = e1->next;
     }
+printf("end %p %p\n", e1, func);
     if(!e1)
       return func;
   } while((func = func->next));
@@ -466,10 +469,11 @@ ANN static Func _find_template_match(const Env env, const Value v, const Exp_Cal
       m_func = find_func_match(env, fbase->func, exp->args);
       nspc_pop_type(env->gwion->mp, env->curr);
       if(!value && m_func) {
-        if(!m_func->def->base->ret_type)
-          CHECK_BO(traverse_func_def(env, m_func->def))
+printf("m_func %p\n", m_func);
+if(!m_func->def->base->ret_type)
+CHECK_BO(traverse_func_def(env, m_func->def))
         map_set(&v->owner->info->type->map, (vtype)sym, (vtype)actual_type(m_func->value_ref->type));
-      }
+}
     }
     free_stmt(env->gwion->mp, stmt);
   }
@@ -583,11 +587,15 @@ ANN static Type check_exp_call_template(const Env env, const Exp_Call *exp) {
   const Exp call = exp->func;
   const Exp args = exp->args;
   m_uint args_number = 0;
+puts("here ==");
   DECL_OO(const Value, value, = nspc_lookup_value1(call->type->e->owner, insert_symbol(call->type->name)))
+puts("after here ==");
   const m_uint type_number = get_type_number(value->d.func_ref->def->base->tmpl->list);
+printf("%s func\n", __func__) ;
   Type_List tl[type_number];
   ID_List list = value->d.func_ref->def->base->tmpl->list;
   while(list) {
+printf("%s func\n", __func__) ;
     Arg_List arg = value->d.func_ref->def->base->args;
     Exp template_arg = args;
     while(arg && template_arg) {
@@ -612,7 +620,7 @@ ANN static Type check_exp_call_template(const Env env, const Exp_Call *exp) {
   DECL_OO(const Func,func, = get_template_func(env, exp, value))
   if(!func->def->base->ret_type) // template fptr
     CHECK_BO(traverse_func_def(env, func->def))
-  return func->def->base->ret_type;
+    return func->def->base->ret_type;
 }
 
 ANN static m_bool check_exp_call1_check(const Env env, const Exp exp) {
@@ -707,7 +715,11 @@ ANN static Type check_exp_call(const Env env, Exp_Call* exp) {
     CHECK_OO((exp->m_func = ret))
     return ret->def->base->ret_type;
   }
-  return check_exp_call1(env, exp);
+
+  const Type t = check_exp_call1(env, exp);
+printf("here exp_call %p\n", t);
+return t;
+//  return check_exp_call1(env, exp);
 }
 
 ANN static Type check_exp_unary(const Env env, const Exp_Unary* unary) {
index ded15f44bca4cca685d551b8e7e766e591cd4a95..2856ea9e235af859a05609bd2254ecd2d4df16e8 100644 (file)
@@ -245,8 +245,8 @@ ANN static m_bool scan1_args(const Env env, Arg_List list) {
 ANN m_bool scan1_stmt_fptr(const Env env, const Stmt_Fptr stmt) {
   if(!stmt->type)
     CHECK_BB(scan0_stmt_fptr(env, stmt))
-  if(stmt->base->tmpl)
-    return GW_OK;
+  if(stmt->base->tmpl)//
+    return GW_OK;//
   CHECK_OB((stmt->base->ret_type = known_type(env, stmt->base->td)))
   return stmt->base->args ? scan1_args(env, stmt->base->args) : GW_OK;
 }
index 5b5fa9891ae0e78e9d77bee4de740730ba8a06cd..2d0af075a753f2652402ee77e0117b1cdf3fb3fa 100644 (file)
@@ -93,7 +93,8 @@ ANN m_bool scan2_stmt_fptr(const Env env, const Stmt_Fptr ptr) {
   ptr->type->e->d.func = ptr->base->func;
   def->base->tmpl = ptr->base->tmpl;
   SET_FLAG(ptr->value, func | ae_flag_checked);
-  if(!ptr->base->tmpl && ptr->base->args)
+if(!ptr->base->tmpl)//
+  if(ptr->base->args)
     CHECK_BB(scan2_args(env, def))
   if(env->class_def) {
     if(GET_FLAG(ptr->base->td, global)) {
index 8b664567fd60c97db51de93ac11bfae73e6e2bfc..aa78ce69f691d5983376f3876f14caf6576d78a8 100644 (file)
Binary files a/src/plug.gcda and b/src/plug.gcda differ
index dc4198660920b242182bcccf24cca7a5d985d91b..de8f8a67e3604c145b1c4cbe7f0ab07bdfd1b5bc 100644 (file)
Binary files a/src/plug.gcno and b/src/plug.gcno differ
index ade055bc0206238fcd62c146fc667641a8cc3d07..66d3f7d25d22fe63e535643e6e3fac0844c6e340 100644 (file)
Binary files a/src/soundinfo.gcda and b/src/soundinfo.gcda differ
index 56f214484dc74f6f50db7695437bc3d606c2e353..6c38817e2d712e48980a868149884fe7ea917968 100644 (file)
Binary files a/src/soundinfo.gcno and b/src/soundinfo.gcno differ
diff --git a/tests/import/driver.so b/tests/import/driver.so
new file mode 100755 (executable)
index 0000000..f286bf3
Binary files /dev/null and b/tests/import/driver.so differ
index 8557b3a477e8e437e3df4916790301647272c67a..b584940e2fb0c9676a5d98e096ec26bdb7003d9d 100644 (file)
@@ -11398,45 +11398,3 @@ global_func.gw ==22565== Memcheck, a memory error detector
 ==4349== 
 ==4349== For counts of detected and suppressed errors, rerun with: -v
 ==4349== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
-/dev/null ==13821== Memcheck, a memory error detector
-==13821== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==13821== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
-==13821== Command: ./../../gwion -p. -d dummy /dev/null
-==13821== Parent PID: 13795
-==13821== 
-==13821== 
-==13821== HEAP SUMMARY:
-==13821==     in use at exit: 928 bytes in 10 blocks
-==13821==   total heap usage: 974 allocs, 964 frees, 7,596,796 bytes allocated
-==13821== 
-==13821== LEAK SUMMARY:
-==13821==    definitely lost: 928 bytes in 10 blocks
-==13821==    indirectly lost: 0 bytes in 0 blocks
-==13821==      possibly lost: 0 bytes in 0 blocks
-==13821==    still reachable: 0 bytes in 0 blocks
-==13821==         suppressed: 0 bytes in 0 blocks
-==13821== Rerun with --leak-check=full to see details of leaked memory
-==13821== 
-==13821== For counts of detected and suppressed errors, rerun with: -v
-==13821== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
-/dev/null ==14729== Memcheck, a memory error detector
-==14729== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==14729== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info
-==14729== Command: ./../../gwion -p. -d dummy /dev/null
-==14729== Parent PID: 13795
-==14729== 
-==14729== 
-==14729== HEAP SUMMARY:
-==14729==     in use at exit: 576 bytes in 9 blocks
-==14729==   total heap usage: 956 allocs, 947 frees, 7,590,612 bytes allocated
-==14729== 
-==14729== LEAK SUMMARY:
-==14729==    definitely lost: 576 bytes in 9 blocks
-==14729==    indirectly lost: 0 bytes in 0 blocks
-==14729==      possibly lost: 0 bytes in 0 blocks
-==14729==    still reachable: 0 bytes in 0 blocks
-==14729==         suppressed: 0 bytes in 0 blocks
-==14729== Rerun with --leak-check=full to see details of leaked memory
-==14729== 
-==14729== For counts of detected and suppressed errors, rerun with: -v
-==14729== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests/tree/array_cast.gw b/tests/tree/array_cast.gw
deleted file mode 100644 (file)
index 1b7c437..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-typedef int[2] _int;
-new _int $ _int;
diff --git a/tests/tree/did_you_mean_type.gw b/tests/tree/did_you_mean_type.gw
deleted file mode 100644 (file)
index 73b0459..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-class C {
-  <<<this.aa>>>;
-  int a;
-}
diff --git a/tests/tree/push_func.gw b/tests/tree/push_func.gw
deleted file mode 100644 (file)
index 2f7957f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-me.exit;
diff --git a/tests/tree/reddit.gw b/tests/tree/reddit.gw
deleted file mode 100644 (file)
index 9b4fd25..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#! basic math printed out (note the space after '<<<' and before '>>>'
-<<<  1 + 2 >>>;
-
-#! define and operator
-operator $@+-*%~<>^&!= void (int i, int j) { <<< i, " ", j >>>; }
-
-1 $@+-*%~<>^&!= 2;
diff --git a/tests/tree/template_fptr.gw b/tests/tree/template_fptr.gw
deleted file mode 100644 (file)
index 3a130d9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-typedef int ptr_t<~A~>(A);
-ptr_t ptr;
-<<<ptr>>>;
-
-fun int test<~A~>(A a) { <<< a >>>; }
-test @=> ptr;
-<<< ptr >>>;
-#!3;
-#!3 => test;
-ptr<~int~>(2);
-ptr<~float~>(2.3);