]> Nishi Git Mirror - gwion.git/commitdiff
:art: Make enum type mandatory
authorJérémie Astor <fennecdjay@gmail.com>
Thu, 29 Jul 2021 17:10:31 +0000 (19:10 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Thu, 29 Jul 2021 17:10:31 +0000 (19:10 +0200)
ast
examples/class_enum.gw
src/parse/scan0.c
tests/error/class_enum.gw
tests/tree/cpy_ast.gw
tests/tree/enum.gw
tests/tree/private_enum.gw

diff --git a/ast b/ast
index 45c938d4ea5b0c768e1ea9eae671f9c49eaacc08..2505a7e746b8a63731c11310593d3d7aaddce714 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 45c938d4ea5b0c768e1ea9eae671f9c49eaacc08
+Subproject commit 2505a7e746b8a63731c11310593d3d7aaddce714
index f620b7eed7313c949630557979f9bf8b69fe7458..bd1eb29e799dcdc5b9b86e49351333209bf8255e 100644 (file)
@@ -1,5 +1,5 @@
 class C {
-  enum {
+  enum {
     zero,
     one,
     two,
index d05038eff8abf4d05025c2eae4bb7fec13edc5e1..f29249e55b70652a4800481c13841ab71d327241 100644 (file)
@@ -192,23 +192,12 @@ ANN m_bool scan0_type_def(const Env env, const Type_Def tdef) {
   return GW_OK;
 }
 
-ANN static Symbol scan0_sym(const Env env, const m_str name, const loc_t pos) {
-  const size_t line_len = num_digit(pos.first.line);
-  const size_t col_len  = num_digit(pos.first.column);
-  char c[strlen(env->curr->name) + strlen(env->name) + line_len + col_len +
-         strlen(name) + 6];
-  sprintf(c, "@%s:%s:%s:%u:%u", name, env->name, env->curr->name,
-          pos.first.line, pos.first.column);
-  return insert_symbol(c);
-}
-
 #define scan0_nspc(env, a)                                                     \
   GET_FLAG(a, global) ? !env->class_def ? env->global_nspc : NULL : env->curr
 
 ANN static Type enum_type(const Env env, const Enum_Def edef) {
   const Type   t    = type_copy(env->gwion->mp, env->gwion->type[et_int]);
-  const Symbol sym  = scan0_sym(env, "enum", edef->pos);
-  t->name           = edef->xid ? s_name(edef->xid) : s_name(sym);
+  t->name           = s_name(edef->xid);
   t->info->parent   = env->gwion->type[et_int];
   const bool global = GET_FLAG(edef, global); // TODO: handle global in class
   if (global) {
index 3a16175ffc70e6a1e762833efbc6da05a734243c..29970bf0601f8307665b7291005ee1535bbe699d 100644 (file)
@@ -1,7 +1,7 @@
 #! [contains] unary operator '--' cannot be used on non-mutable data-types
 class C
 {
-  enum { a, b };
+  enum { a, b };
 }
 
 C.a;
index d481961d2feb6c24b2509cc5918a6fb11d94f0fd..25c18fb6b737009b6f9a19777382805d159628df 100644 (file)
@@ -19,7 +19,7 @@ class C:[A] {
     case 12 when 0:;
     case _,2 when 0:;
   } where var int b;
-  enum { zero };
+  enum { zero };
   typedef int Int;
   new Object;
   spork { <<< __func__ >>>; };
index 05b4fa6e264c3ad21beee824f9fca63582aa8503..4c29fd9e56d32d4bf3624d34686619f638b8d17b 100644 (file)
@@ -1,4 +1,4 @@
-enum {
+enum {
   zero, one, two, three
 };
 <<< zero, " ", one, " ", two, " ", three >>>;
index 0c2d9de24e26fddd63ac5526d0215f9919e5387f..2715e6a6104c01fb17c62969da7933e794c3bbe8 100644 (file)
@@ -1,5 +1,5 @@
 class C {
-  enum private {
+  enum private {
     TEST
   };
 }