# HG changeset patch # User aziz # Date 1185547742 0 # Node ID c2b601dcd57da8a65b6f5e078a9b8fbc218b4e68 # Parent 2a4e2c8ca094cc08e00bf73809d540a3f96dfeed - Added assert to parseDotListExpression(). - Fix: moved require(T.Dot) inside nested function in parseUnaryExpression(). diff -r 2a4e2c8ca094 -r c2b601dcd57d trunk/src/Parser.d --- a/trunk/src/Parser.d Fri Jul 27 12:12:05 2007 +0000 +++ b/trunk/src/Parser.d Fri Jul 27 14:49:02 2007 +0000 @@ -1205,10 +1205,11 @@ TemplateInstance NewExpression TemplateInstance: - Identifier !( TemplateArgumentList ) + Identifier !( TemplateArguments ) +/ DotListExpression parseDotListExpression() { + assert(token.type == T.Identifier || token.type == T.Dot || token.type == T.Typeof); Expression[] identList; if (token.type == T.Dot) { @@ -1250,6 +1251,7 @@ goto LnewExpressionLoop; } } + Lreturn: return new DotListExpression(identList); } @@ -1267,7 +1269,7 @@ Identifier TemplateInstance TemplateInstance: - Identifier !( TemplateArgumentList ) + Identifier !( TemplateArguments ) +/ DotListType parseDotListType() { @@ -1314,8 +1316,8 @@ mixin ( AssignExpression ) ; mixin TemplateIdentifier ; mixin TemplateIdentifier MixinIdentifier ; - mixin TemplateIdentifier !( TemplateArgumentList ) ; - mixin TemplateIdentifier !( TemplateArgumentList ) MixinIdentifier ; + mixin TemplateIdentifier !( TemplateArguments ) ; + mixin TemplateIdentifier !( TemplateArguments ) MixinIdentifier ; */ Declaration parseMixinDeclaration() { @@ -2469,13 +2471,13 @@ nT(); auto type = parseType(); require(T.RParen); + require(T.Dot); return type; } bool success; auto type = try_(parseType_(), success); if (success) { - require(T.Dot); string ident = requireIdentifier(); e = new TypeDotIdExpression(type, ident); break;