diff trunk/src/Parser.d @ 257:6c58366ba1eb

- Fix: need to allocate Parameters. - Fix in parseUnaryExpression(): need to call nT() before calling parseUnaryExpression() recursively.
author aziz
date Wed, 01 Aug 2007 20:37:03 +0000
parents 8f27920ae17a
children 112a57f433f2
line wrap: on
line diff
--- a/trunk/src/Parser.d	Wed Aug 01 20:13:03 2007 +0000
+++ b/trunk/src/Parser.d	Wed Aug 01 20:37:03 2007 +0000
@@ -1897,7 +1897,7 @@
     TOK tok = token.type;
     nT();
 
-    Parameters params;
+    auto params = new Parameters;
     Expression aggregate;
 
     require(T.LParen);
@@ -2633,31 +2633,39 @@
     switch (token.type)
     {
     case T.AndBinary:
+      nT();
       e = new AddressExpression(parseUnaryExpression());
       break;
     case T.PlusPlus:
+      nT();
       e = new PreIncrExpression(parseUnaryExpression());
       break;
     case T.MinusMinus:
+      nT();
       e = new PreDecrExpression(parseUnaryExpression());
       break;
     case T.Mul:
+      nT();
       e = new DerefExpression(parseUnaryExpression());
       break;
     case T.Minus:
     case T.Plus:
+      nT();
       e = new SignExpression(parseUnaryExpression());
       break;
     case T.Not:
+      nT();
       e = new NotExpression(parseUnaryExpression());
       break;
     case T.Tilde:
+      nT();
       e = new CompExpression(parseUnaryExpression());
       break;
     case T.New:
       e = parseNewExpression();
       return e;
     case T.Delete:
+      nT();
       e = new DeleteExpression(parseUnaryExpression());
       break;
     case T.Cast:
@@ -2665,7 +2673,7 @@
       auto type = parseType();
       require(T.RParen);
       e = new CastExpression(parseUnaryExpression(), type);
-      goto Lset;
+      break;
     case T.LParen:
       // ( Type ) . Identifier
       Type parseType_()
@@ -2682,7 +2690,7 @@
       {
         auto ident = requireId();
         e = new TypeDotIdExpression(type, ident);
-        goto Lset;
+        break;
       }
       goto default;
     default:
@@ -2690,8 +2698,6 @@
       return e;
     }
     assert(e !is null);
-    nT();
-  Lset:
     set(e, begin);
     return e;
   }