]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
support enum members with values
authorJürg Billeter <j@bitron.ch>
Wed, 22 Nov 2006 10:07:38 +0000 (10:07 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Wed, 22 Nov 2006 10:07:38 +0000 (10:07 +0000)
2006-11-22  Jürg Billeter  <j@bitron.ch>

* vala/parser.y, vala/valacodegenerator.vala: support enum members with
  values

svn path=/trunk/; revision=180

vala/ChangeLog
vala/vala/parser.y
vala/vala/valacodegenerator.vala

index b84bc15b7163decf90d6f075bbd401547b3e2e98..b28b3ed0b60105a3af51ad77ddebaa958a6d76ba 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-22  Jürg Billeter  <j@bitron.ch>
+
+       * vala/parser.y, vala/valacodegenerator.vala: support enum members with
+         values
+
 2006-11-22  Jürg Billeter  <j@bitron.ch>
 
        * vapi/glib-2.0.vala: add direct_hash and direct_equal
index d19518c89f1223635917480bd7b022abbc90b35d..f4fee4583d880b691efe8ae9a6ee4bd0ef6f74f9 100644 (file)
@@ -2784,8 +2784,9 @@ enum_member_declaration
          }
        | opt_attributes IDENTIFIER ASSIGN expression
          {
-               $$ = vala_enum_value_new ($2);
+               $$ = vala_enum_value_new_with_value ($2, $4);
                g_free ($2);
+               g_object_unref ($4);
          }
        ;
 
index b781f874d93b240742a56a049e93cee97d62fd21..57bd298123991baa243781aae192fc9c421a80a8 100644 (file)
@@ -911,7 +911,14 @@ public class Vala.CodeGenerator : CodeVisitor {
        }
 
        public override void visit_enum_value (EnumValue! ev) {
-               cenum.add_value (ev.get_cname (), null);
+               string val;
+               if (ev.value is LiteralExpression) {
+                       var lit = ((LiteralExpression) ev.value).literal;
+                       if (lit is IntegerLiteral) {
+                               val = ((IntegerLiteral) lit).value;
+                       }
+               }
+               cenum.add_value (ev.get_cname (), val);
        }
 
        public override void visit_end_callback (Callback! cb) {