]> Nishi Git Mirror - gwion.git/commitdiff
:art: Rename ref to late
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 14 Dec 2020 23:44:20 +0000 (00:44 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 14 Dec 2020 23:44:20 +0000 (00:44 +0100)
26 files changed:
ast
examples/class_spork_exp.gw
examples/empty_string.gw
examples/in_class_class.gw
examples/op.gw
examples/spork_exp.gw
include/operator.h
src/emit/emit.c
src/lib/array.c
src/lib/object_op.c
src/lib/opfunc.c
src/parse/check.c
src/parse/scan1.c
tests/bug/play_with_str.gw
tests/error/UgenConnectException.gw
tests/fork/fork.gw
tests/fork/fork_call.gw
tests/fork/fork_join.gw
tests/fork/fork_join2.gw
tests/new/vararg_cpy.gw
tests/tree/class_multi_ref_decl.gw
tests/tree/class_simple_ref_decl.gw
tests/tree/multi_ref_decl.gw
tests/tree/new.gw
tests/tree/shredule_test.gw
tests/tree/simple_ref_decl.gw

diff --git a/ast b/ast
index 1f57eb48c6eb8b0379b3d232cb7f3fe1ccf90d67..76ba56280e16bbef295c8496a50d079cce7fa1f9 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 1f57eb48c6eb8b0379b3d232cb7f3fe1ccf90d67
+Subproject commit 76ba56280e16bbef295c8496a50d079cce7fa1f9
index f37727a5f2304f132aa547574a3439772c9e8fe4..efd42f184df9eaae219b056ec2bb83de7c535870 100644 (file)
@@ -7,7 +7,7 @@ class C
     second => now;
     var string s;
     <<<   "test spork exp."  >>>;
-  } @=> ref Shred shred;
+  } @=> var Shred shred;
 }
 
 var C c;
index f89e32459dd95a8931e82563da806a94c0e4db2e..7ac5532f34c746532393218ed3e7cf6be545b0b6 100644 (file)
@@ -1,2 +1,2 @@
-"test" => ref string s;
+"test" @=> var string s;
 <<<  s  >>>;
index 6b4fe3969d6bb0933bc619f390b30712943fbc39..7505dfd12c60c0eacba9ea1cbe02b39a30219f18 100644 (file)
@@ -5,6 +5,6 @@ class C {
 
 var C c;
 var C.D d;
-ref C.D d_ref;
+late C.D d_ref;
 
 <<<  c, " ", d, d_ref  >>>;
index f6a264b09281e650f4eaca56fbaa956b022036f8..f16849bf74315be09561ddefdb1cb42bdee8b954 100644 (file)
@@ -5,7 +5,7 @@ operator void => (Object o, int i) {
 }
 
 class C {
-       ref Object ref_object;
+       late Object ref_object;
 }
 
 #!! assign object to C.ref
index 5da1b739418a7d88531971885ee546cc5fd8791f..13d513a0f4642c17357ad71369567f75e35f5ce4 100644 (file)
@@ -9,7 +9,7 @@ class C
     var string s;
     <<<  this,  " test spork exp. " , s >>>;
 
-  } @=> ref Shred shred;
+  } @=> var Shred shred;
 }
 
 var C c;
index f44f404f20f1af10ee66a659681ce05d3bbce603..e66dd3627f18922636628622c40d49bf839da1c9 100644 (file)
@@ -66,8 +66,8 @@ ANN static inline void operator_resume(struct Op_Import *opi) {
 
 ANN static inline void set_decl_ref(const Exp e) {
   if(e->exp_type == ae_exp_decl) {
-    SET_FLAG(e->d.exp_decl.td, ref);
-    SET_FLAG(e->d.exp_decl.list->self->value, ref);
+    SET_FLAG(e->d.exp_decl.td, late);
+    SET_FLAG(e->d.exp_decl.list->self->value, late);
   }
 }
 
index af1d0e7a94a84f91b6413ef3e3602afc26d5a500..a845a8f4b6c1f0854b37c2382fdcda61bec30e56 100644 (file)
@@ -486,7 +486,7 @@ ANN static void struct_addref(const Emitter emit, const Type type,
 ANN2(1) static void emit_exp_addref1(const Emitter emit, /* const */Exp exp, m_int size) {
   if(isa(exp->info->type, emit->gwion->type[et_object]) > 0 &&
         (exp->info->cast_to ? isa(exp->info->cast_to, emit->gwion->type[et_object]) > 0 : 1)) {
-    if(exp->exp_type == ae_exp_decl && GET_FLAG(exp->d.exp_decl.td, ref) && !exp_getvar(exp)) {
+    if(exp->exp_type == ae_exp_decl && GET_FLAG(exp->d.exp_decl.td, late) && !exp_getvar(exp)) {
       const Instr instr = emit_add_instr(emit, GWOP_EXCEPT);
       instr->m_val = size;
     }
@@ -775,7 +775,7 @@ ANN static m_bool emit_exp_decl_non_static(const Emitter emit, const Exp_Decl *d
   if(!vflag(v, vflag_member)) {
     v->from->offset = emit_local(emit, type);
     exec = (f_instr*)(allocword);
-    if(GET_FLAG(decl->td, ref)) { // ref or emit_var ?
+    if(GET_FLAG(decl->td, late)) { // ref or emit_var ?
       const Instr clean = emit_add_instr(emit, MemSetImm);
       clean->m_val = v->from->offset;
     }
@@ -850,7 +850,7 @@ ANN static inline m_bool ensure_emit(const Emitter emit, const Type t) {
 ANN static m_bool emit_decl(const Emitter emit, const Exp_Decl* decl) {
   const m_bool global = GET_FLAG(decl->td, global);
   const uint var = exp_getvar(exp_self(decl));
-  const uint ref = GET_FLAG(decl->td, ref) || type_ref(decl->type);
+  const uint ref = GET_FLAG(decl->td, late) || type_ref(decl->type);
   Var_Decl_List list = decl->list;
   do {
     if(GET_FLAG(decl->td, static))
index 775fef1ed61dc59ba1b7b10f718d9102a72efc90..461e9c38c231515a4e48a443467519a9f2497dae 100644 (file)
@@ -159,7 +159,7 @@ static OP_CHECK(opck_array_at) {
       ERR_N(exp_self(bin)->pos, _("array depths do not match."))
   }
   if(bin->rhs->exp_type == ae_exp_decl) {
-    SET_FLAG(bin->rhs->d.exp_decl.td, ref);
+    SET_FLAG(bin->rhs->d.exp_decl.td, late);// ???
     if(bin->rhs->d.exp_decl.list->self->array &&
           bin->rhs->d.exp_decl.list->self->array->exp)
       ERR_N(exp_self(bin)->pos, _("do not provide array for 'xxx @=> declaration'."))
index 01c6e4c785bfa8d5a65c515f5892ee8346c147d6..3ee968907de6edb4da5b59ebfefbc085b9baeffd 100644 (file)
@@ -34,7 +34,7 @@ static OP_CHECK(at_object) {
   if(opck_rassign(env, data, mut) == env->gwion->type[et_error])
     return env->gwion->type[et_error];
   if(bin->rhs->exp_type == ae_exp_decl)
-    SET_FLAG(bin->rhs->d.exp_decl.td, ref);
+    SET_FLAG(bin->rhs->d.exp_decl.td, late); // ???
   exp_setvar(bin->rhs, 1);
   CHECK_BO(isa(bin->lhs->info->type , bin->rhs->info->type))
   return bin->rhs->info->type;
@@ -204,7 +204,7 @@ OP_EMIT(opem_object_dot) {
     const Instr instr = emit_add_instr(emit, RegPushImm);
     instr->m_val = (m_uint)value->type;
   }
-  if(GET_FLAG(value, ref)) {
+  if(GET_FLAG(value, late)) {
     const Instr instr = emit_add_instr(emit, GWOP_EXCEPT);
     instr->m_val = -SZ_INT;
   }
index baa7462aef7cb4ea6e87f340429c56891237306c..3050f9cbf2b8aa49f1d36f10d8a7c9205e32065b 100644 (file)
@@ -83,7 +83,7 @@ ANN static inline Type check_new_td(const Env env, Type_Decl *td) {
 
 OP_CHECK(opck_new) {
   const Exp_Unary* unary = (Exp_Unary*)data;
-  SET_FLAG(unary->td, ref);
+  SET_FLAG(unary->td, late);
   DECL_ON(const Type, t, = check_new_td(env, unary->td))
   if(isa(t, env->gwion->type[et_object]) < 0)
     ERR_N(exp_self(unary)->pos, _("can't use 'new' on non-object types...\n"))
@@ -91,7 +91,7 @@ OP_CHECK(opck_new) {
     ERR_N(td_pos(unary->td), _("can't use 'new' on ref type '%s'\n"), t->name)
   if(GET_FLAG(t, abstract))
     ERR_N(td_pos(unary->td), _("can't use 'new' on abstract type '%s'\n"), t->name)
-  UNSET_FLAG(unary->td, ref);
+  UNSET_FLAG(unary->td, late);
   if(unary->td->array)
     CHECK_BN(check_subscripts(env, unary->td->array, 1))
   return t;
@@ -100,6 +100,6 @@ OP_CHECK(opck_new) {
 OP_EMIT(opem_new) {
   const Exp_Unary* unary = (Exp_Unary*)data;
   CHECK_BO(emit_instantiate_object(emit, exp_self(unary)->info->type,
-    unary->td->array, GET_FLAG(unary->td, ref)))
+    unary->td->array, GET_FLAG(unary->td, late)))
   return emit_gc(emit, -SZ_INT);
 }
index 47e5766939c596ad378298281de9bd97da84c134..f8edca49f918ac808fada8897cdbce3e5a89d854 100644 (file)
@@ -122,11 +122,11 @@ ANN static m_bool check_var_td(const Env env, const Var_Decl var, Type_Decl *con
 
 ANN static void set_late(const Gwion gwion, const Exp_Decl *decl, const Value v) {
   if(!exp_getvar(exp_self(decl)) &&
-      (GET_FLAG(decl->td, ref) || is_fptr(gwion, v->type))) {
-    SET_FLAG(decl->td, ref);
-    SET_FLAG(v, ref);
+      (GET_FLAG(decl->td, late) || is_fptr(gwion, v->type))) {
+    SET_FLAG(decl->td, late);
+    SET_FLAG(v, late);
   } else
-    UNSET_FLAG(v, ref);
+    UNSET_FLAG(v, late);
 }
 
 ANN static m_bool check_decl(const Env env, const Exp_Decl *decl) {
@@ -173,7 +173,7 @@ ANN Type check_exp_decl(const Env env, const Exp_Decl* decl) {
   if(!decl->td->xid)
     return no_xid(env, decl);
   if(decl->td->xid == insert_symbol("auto")) { // should be better
-    SET_FLAG(decl->td, ref);
+    SET_FLAG(decl->td, late);
     CHECK_BO(scan1_exp(env, exp_self(decl)))
     CHECK_BO(scan2_exp(env, exp_self(decl)))
   }
index 0d78487bf1304565d86d96b106bec479f095084c..13567187c6fd0f89542dc20a360ebb0d3fb35cce 100644 (file)
@@ -35,7 +35,7 @@ ANN static inline m_bool ensure_scan1(const Env env, const Type t) {
 ANN static Type scan1_type(const Env env, Type_Decl* td) {
   DECL_OO(const Type, type, = known_type(env, td))
   const Type t = get_type(type);
-  if(!env->func && env->class_def && !GET_FLAG(td, ref))
+  if(!env->func && env->class_def && !GET_FLAG(td, late))
     CHECK_BO(type_cyclic(env, t, td))
   CHECK_BO(ensure_scan1(env, t))
   return type;
@@ -85,10 +85,10 @@ ANN static m_bool scan1_decl(const Env env, const Exp_Decl* decl) {
       if(var->array->exp)
         CHECK_BB(scan1_exp(env, var->array->exp))
       t = array_type(env, decl->type, var->array->depth);
-    } else if(GET_FLAG(t, abstract) && !GET_FLAG(decl->td, ref)) {
+    } else if(GET_FLAG(t, abstract) && !GET_FLAG(decl->td, late)) {
       if(!(t == env->class_def && env->scope->depth)) {
         if(decl->td->xid == insert_symbol("auto"))
-          SET_FLAG(decl->td, ref);
+          SET_FLAG(decl->td, late);
         else
           ERR_B(exp_self(decl)->pos, _("Type '%s' is abstract, declare as ref. (use @)"), t->name)
       }
@@ -105,7 +105,7 @@ ANN static m_bool scan1_decl(const Env env, const Exp_Decl* decl) {
     v->flag |= decl->td->flag;
     v->type = t;
     if(array_ref(var->array))
-      SET_FLAG(decl->td, ref);
+      SET_FLAG(decl->td, late);
     if(env->class_def) {
       if(env->class_def->info->tuple)
         tuple_contains(env, v);
@@ -131,7 +131,7 @@ ANN m_bool scan1_exp_decl(const Env env, const Exp_Decl* decl) {
   CHECK_BB(env_storage(env, decl->td->flag, exp_self(decl)->pos))
   ((Exp_Decl*)decl)->type = scan1_exp_decl_type(env, (Exp_Decl*)decl);
   if(array_ref(decl->td->array))
-   SET_FLAG(decl->td, ref);
+   SET_FLAG(decl->td, late);
   CHECK_OB(decl->type)
   const m_bool global = GET_FLAG(decl->td, global);
   if(global) {
index 4e5619e8dfc75f5f91a2d621abc502e987ea9efb..0dd00278151f4ef67092e5cdfab61f9763416b22 100644 (file)
@@ -1,4 +1,4 @@
-"lol" @=> ref string s;
+"lol" @=> var string s;
 "test" => s;
 
 <<< "testmem".replace(2, 3, "UKUH") >>>;
index 0f4cef6625b47d4e44fe2d53d74e4692fc2d22db..75ca2dcb79273f46e5a4ac490c86d8ec97520ba1 100644 (file)
@@ -1 +1 @@
-ref Gain g => dac;
+late Gain g => dac;
index 2b3ba86bf02ca57948c732bf7dbe1b7c7ed2892c..7bc937ac3da223be2a090db9623f36a2b09a4f57 100644 (file)
@@ -3,7 +3,7 @@ fork {
   12::samp => now;
   me.test_cancel();
   <<< "stop" >>>;
-} @=> ref Fork f;
+} @=> var Fork f;
 
 1 => f.set_cancel;
 2::samp => now;
index 0178f87935bae8f6f4f903caa431347ed9b58b64..5a121c1b122a363f3154882360b061480da56e00 100644 (file)
@@ -2,7 +2,7 @@ fun int test() {
   return 12;
 }
 
-fork test() @=> ref auto sh;
+fork test() @=> var auto sh;
 <<< typeof(sh) >>>;
 sh.ev => now;
 <<< sh.retval >>>;
index ad332af1928cb196d38a6b42db92dfe753148c73..699826e3d55289f0252cfa2701e25ad8ce742c68 100644 (file)
@@ -1,3 +1,3 @@
-fork { <<< __func__ >>>; } @=> ref Fork f;
+fork { <<< __func__ >>>; } @=> var Fork f;
 second => now;
 f.join();
index 146014e2fa10d845ebbdd60dced14cb0f8fd3f76..c8e1bd719c8027c2bb2c225c5eaa29c98672460c 100644 (file)
@@ -1,2 +1,2 @@
-fork { <<< __func__ >>>; minute => now; } @=> ref Fork f;
+fork { <<< __func__ >>>; minute => now; } @=> var Fork f;
 f.join();
index 6a2dc2047593696650dacef0ebeb0da2b4af3528..66f04212bf5ccaa37786286e978fc2c74663a92e 100644 (file)
@@ -1,5 +1,5 @@
 fun void test(...) {
   <<< vararg >>>;
-  <<< vararg.cpy() @=> ref Vararg new_arg >>>;
+  <<< vararg.cpy() @=> var Vararg new_arg >>>;
 }
 test(1);
index 034eefcfaa0422240c10857af2ee89ce8e40551c..3e5d394a2f0b8001b5dabf551c843b7c004c9afd 100644 (file)
@@ -1,4 +1,4 @@
 class C {
-       ref Object i, a;
+       late Object i, a;
 }
 
index bf3549470a33d59637f4453e56bdb67bfa28efe8..1e03df44ed14db9ffe8363e12f2db47c661298cf 100644 (file)
@@ -1,4 +1,4 @@
 class C {
-       ref Object o;
+       late Object o;
 }
 
index dfd214048772e45e63103ee169588b9e67dc76fd..f00f385397587c0012667dbeed771c30f431d093 100644 (file)
@@ -1,2 +1,2 @@
-ref Object i, a;
+late Object i, a;
 <<< i, a >>>;
index 38ff83aefd29cd1116daca9f1de2a97fb3614bfe..f46ee7c9a116572abd3e34b42a365374542ab606 100644 (file)
@@ -2,6 +2,6 @@ new Object;
 new Object @=> var Object refref;
 new Event;
 var Event ev;
-ev @=> ref Event e;
+ev @=> var Event e;
 new Event @=> e;
 ev @=> e;
index 4ceb10c42803359aac1682a3c4e7924a0cc4ed1a..09458f0ded0fb64d925903556adab97a40ef9750 100644 (file)
@@ -2,8 +2,8 @@
 var Event e;
 spork { e => now; };
 spork { samp => now; 4::samp => now;};
-spork { 5::samp => now;} @=> ref Shred s;
-spork { samp => now; 4::samp => now; } @=> ref Shred t;
+spork { 5::samp => now;} @=> var Shred s;
+spork { samp => now; 4::samp => now; } @=> var Shred t;
 spork { 2::samp => now; me.exit(); };
 spork { new Object; <<< "garbage collect me"  >>>; 3::samp => now; };
 2::samp => now;
index 921df645cd25cb1aa056d863bac853239951dfb6..50cbf072c65aaead9501f68425e2720fee9a58dc 100644 (file)
@@ -1,2 +1,2 @@
-ref Object o;
+late Object o;
 <<< o >>>;