]> Nishi Git Mirror - gwion.git/commitdiff
:art: make envset/push static
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Thu, 7 May 2020 16:55:24 +0000 (18:55 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Thu, 7 May 2020 16:55:24 +0000 (18:55 +0200)
src/env/envset.c
src/lib/object_op.c
src/parse/check.c
src/parse/scan0.c
src/parse/scan1.c

index a523d77a40c545e3497f3ecd3cdf119a9a26ea1f..3ff71a903025eefe3435b469f977e7f6f4af9849 100644 (file)
@@ -17,7 +17,7 @@ ANN static void check(struct EnvSet *es, const Type t) {
   }
 }
 
-ANN m_bool push(struct EnvSet *es, const Type t) {
+ANN static m_bool push(struct EnvSet *es, const Type t) {
   if(t->e->owner_class)
     CHECK_BB(push(es, t->e->owner_class))
   if(!(t->flag & es->flag))
index 15114751095805c3181fe5a2ae63c39952755e0d..a900ad8d3fa497f18927f77f916c4ada688a1c52 100644 (file)
@@ -399,7 +399,6 @@ ANN static Type scan_class(const Env env, const Type t, const Type_Decl* td) {
   SET_FLAG(a->base.type, template);
   if(GET_FLAG(t, builtin))
     SET_FLAG(a->base.type, builtin);
-  CHECK_BO(scan1_cdef(env, a))
   return a->base.type;
 }
 
index ce74ee2407bcac89c85149179b79a0f0b4190886..93bc124471e4647d8770e4d46bc276d0851eb667 100644 (file)
@@ -1094,15 +1094,17 @@ ANN void check_udef(const Env env, const Union_Def udef) {
   if(udef->xid) {
     if(env->class_def)
       (!GET_FLAG(udef, static) ? decl_member : decl_static)(env, udef->value);
-  } else if(env->class_def)  {
-    if(!GET_FLAG(udef, static))
-      udef->o = env->class_def->nspc->info->offset;
-    else {
-      udef->o = env->class_def->nspc->info->class_data_size;
-      env->class_def->nspc->info->class_data_size += SZ_INT;
+    else if(env->class_def) {
+      if(!GET_FLAG(udef, static))
+        udef->o = env->class_def->nspc->info->offset;
+      else {
+        udef->o = env->class_def->nspc->info->class_data_size;
+        env->class_def->nspc->info->class_data_size += SZ_INT;
+      }
     }
   }
 }
+
 ANN m_bool check_union_def(const Env env, const Union_Def udef) {
   if(tmpl_base(udef->tmpl)) // there's a func for this
     return GW_OK;
index 7e5adef369015898b56d35c3bf3e1d363a3e3e57..1cc3d60e25c6cdabc98004f6c26bc2e6833630fd 100644 (file)
@@ -234,7 +234,7 @@ ANN static Type union_type(const Env env, const Symbol s, const m_bool add) {
   if(add) {
     mk_class(env, t);
   }
-  SET_FLAG(t, union);
+  SET_FLAG(t, union | ae_flag_scan0);
   return t;
 }
 
@@ -374,6 +374,7 @@ ANN m_bool scan0_class_def(const Env env, const Class_Def c) {
   CHECK_BB(ret)
   if(GET_FLAG(cdef, global) || (cdef->base.tmpl && !cdef->base.tmpl->call))
     c->base.type = cdef->base.type;
+  SET_FLAG(cdef->base.type, scan0);
   return GW_OK;
 }
 
index f7bbf02cdfaa433f353de7e1b777a146d6333044..2cef2840530a2cb362e98b78da92a764003cbd28 100644 (file)
@@ -325,9 +325,9 @@ ANN m_bool scan1_union_def_action(const Env env, const Union_Def udef,
     SET_FLAG(decl.td, member);
   else if(GET_FLAG(udef, static))
     SET_FLAG(decl.td, static);
-
   if(udef->tmpl && udef->tmpl->call)
     CHECK_BB(template_push_types(env, udef->tmpl))
+  SET_FLAG(decl.td, ref);
   const m_bool ret = scan1_exp(env, l->self);
   if(udef->tmpl && udef->tmpl->call)
     nspc_pop_type(env->gwion->mp, env->curr);