Mercurial > projects > dil
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()