]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fixing union and enum access
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 9 May 2020 19:45:53 +0000 (21:45 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 9 May 2020 19:45:53 +0000 (21:45 +0200)
src/parse/scan0.c
src/parse/scan1.c

index f4b6ef9d45eef02f2679a8df3366ced8182ce2ef..564f45618d8c2ed2598c3fdcb4a78244510cd379 100644 (file)
@@ -275,6 +275,7 @@ ANN m_bool scan0_union_def(const Env env, const Union_Def udef) {
     const Type t = union_type(env, sym, !!udef->type_xid);
     udef->value = union_value(env, t, udef->xid);
     udef->value->flag |= udef->flag;
+    SET_ACCESS(udef, t);
     if(env->class_def && !GET_FLAG(udef, static)) {
       SET_FLAG(udef->value, member);
       SET_FLAG(udef, member);
@@ -282,11 +283,13 @@ ANN m_bool scan0_union_def(const Env env, const Union_Def udef) {
   } else if(udef->type_xid) {
     CHECK_BB(scan0_defined(env, udef->type_xid, udef->pos))
     udef->type = union_type(env, udef->type_xid, 1);
+    SET_ACCESS(udef, udef->type);
     SET_FLAG(udef->type, checked);
   } else {
     const Symbol sym = scan0_sym(env, "union", udef->pos);
     CHECK_BB(scan0_defined(env, sym, udef->pos))
     const Type t = union_type(env, sym, 1);
+    SET_ACCESS(udef, t);
     udef->value = union_value(env, t, sym);
     udef->value->flag |= udef->flag;
   }
index 3a6d978f945919cbdc5294f0f4a05b3c45f95002..a298f27173ba7a41ccca358c617e1d9e1c4b2dab 100644 (file)
@@ -279,6 +279,7 @@ ANN m_bool scan1_enum_def(const Env env, const Enum_Def edef) {
     if(env->class_def) {
       SET_FLAG(v, static);
       SET_ACCESS(edef, v)
+      SET_ACCESS(edef, edef->t)
     }
     SET_FLAG(v, const | ae_flag_enum | ae_flag_checked);
     nspc_add_value(edef->t->e->owner, list->xid, v);