Mercurial > projects > dil
changeset 232:2a4e2c8ca094
- Renamed method isTemplateParameterList() to tokenAfterParenIs().
- Checking for T.LBrace after right parenthesis before parsing as ParameterList.
author | aziz |
---|---|
date | Fri, 27 Jul 2007 12:12:05 +0000 |
parents | 6846138a0e24 |
children | c2b601dcd57d |
files | trunk/src/Parser.d |
diffstat | 1 files changed, 12 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Parser.d Fri Jul 27 11:19:00 2007 +0000 +++ b/trunk/src/Parser.d Fri Jul 27 12:12:05 2007 +0000 @@ -319,7 +319,7 @@ // writef("°Function°"); // It's a function declaration TemplateParameter[] tparams; - if (isTemplateParameterList()) + if (tokenAfterParenIs(T.LParen)) { // ( TemplateParameterList ) ( ParameterList ) tparams = parseTemplateParameterList(); @@ -2797,11 +2797,9 @@ e = new IsExpression(type, ident, specType); break; case T.LParen: - Token t; - bool success; - auto parameters = try_(parseParameterList(), success); - if (success) + if (tokenAfterParenIs(T.LBrace)) { + auto parameters = parseParameterList(); // ( ParameterList ) FunctionBody auto funcType = new FunctionType(null, parameters); auto funcBody = parseFunctionBody(new FunctionBody); @@ -2959,20 +2957,21 @@ assert(0); } - bool isTemplateParameterList() + bool tokenAfterParenIs(TOK tok) { // We count nested parentheses tokens because template types may appear inside parameter lists; e.g. (int x, Foo!(int) y). - Token t; + assert(token.type == T.LParen); + Token next; uint level = 1; while (1) { - lx.peek(t); - switch (t.type) + lx.peek(next); + switch (next.type) { case T.RParen: if (--level == 0) { // Closing parentheses found. - lx.peek(t); + lx.peek(next); break; } continue; @@ -2986,9 +2985,8 @@ } break; } - if (t.type == T.LParen) - return true; - return false; + + return next.type == tok; } Type parseDeclaratorSuffix(Type t) @@ -3005,7 +3003,7 @@ /+ // parsed in parseDeclaration() case T.LParen: TemplateParameter[] tparams; - if (isTemplateParameterList()) + if (tokenAfterParenIs(T.LParen)) { // ( TemplateParameterList ) ( ParameterList ) tparams = parseTemplateParameterList();