diff trunk/src/dil/Parser.d @ 406:e242f0ee2d27

Added class EnumMember. Refactored parseEnumDeclaration() to make use of EnumMember.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sun, 23 Sep 2007 21:48:05 +0200
parents e2529923a0cb
children 38fccd2640eb
line wrap: on
line diff
--- a/trunk/src/dil/Parser.d	Sun Sep 23 20:32:12 2007 +0200
+++ b/trunk/src/dil/Parser.d	Sun Sep 23 21:48:05 2007 +0200
@@ -903,8 +903,7 @@
 
     Token* enumName;
     Type baseType;
-    Token*[] members;
-    Expression[] values;
+    EnumMember[] members;
     bool hasBody;
 
     nT(); // Skip enum keyword.
@@ -933,15 +932,19 @@
       nT(); // Skip {
       while (token.type != T.RBrace)
       {
-        members ~= requireId();
+        auto begin = token;
+        auto memberName = requireId();
+        Expression value;
 
         if (token.type == T.Assign)
         {
           nT();
-          values ~= parseAssignExpression();
+          value = parseAssignExpression();
         }
         else
-          values ~= null;
+          value = null;
+
+        members ~= set(new EnumMember(memberName, value), begin);
 
         if (token.type != T.Comma)
           break;
@@ -952,7 +955,7 @@
     else
       error(MID.ExpectedButFound, "enum declaration", token.srcText);
 
-    return new EnumDeclaration(enumName, baseType, members, values, hasBody);
+    return new EnumDeclaration(enumName, baseType, members, hasBody);
   }
 
   Declaration parseClassDeclaration()