Mercurial > projects > dil
changeset 225:8883c113c2f1
- Fix: case T.Identity should be T.Is.
- Fix in parseUnaryExpression(): need to call try_() in case T.LParen.
author | aziz |
---|---|
date | Thu, 26 Jul 2007 20:42:04 +0000 |
parents | f838a37a25bd |
children | aa38e1401217 |
files | trunk/src/Parser.d |
diffstat | 1 files changed, 18 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Parser.d Thu Jul 26 18:59:02 2007 +0000 +++ b/trunk/src/Parser.d Thu Jul 26 20:42:04 2007 +0000 @@ -2333,7 +2333,7 @@ nT(); operator = T.NotIdentity; goto LNotIdentity; - case T.Identity: + case T.Is: operator = T.Identity; LNotIdentity: nT(); @@ -2447,12 +2447,23 @@ break; case T.LParen: // ( Type ) . Identifier - auto type = parseType(); - require(T.RParen); - require(T.Dot); - string ident = requireIdentifier(); - e = new TypeDotIdExpression(type, ident); - break; + Type parseType_() + { + nT(); + auto type = parseType(); + require(T.RParen); + return type; + } + bool success; + auto type = try_(parseType_(), success); + if (success) + { + require(T.Dot); + string ident = requireIdentifier(); + e = new TypeDotIdExpression(type, ident); + break; + } + goto default; default: e = parsePostExpression(parsePrimaryExpression()); break;