Mercurial > projects > dil
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; }