# HG changeset patch # User aziz # Date 1186224905 0 # Node ID f3dfa6208ed3825723be6425ed3dacd48b4ca084 # Parent fea4e8b6cea5fa474bc8247fb17f2a861e1b845b - Removed parameter func from parseFunctionBody(). Creating new FunctionBody inside the method. diff -r fea4e8b6cea5 -r f3dfa6208ed3 trunk/src/Parser.d --- a/trunk/src/Parser.d Sat Aug 04 10:46:03 2007 +0000 +++ b/trunk/src/Parser.d Sat Aug 04 10:55:05 2007 +0000 @@ -347,7 +347,7 @@ // ReturnType FunctionName ( ParameterList ) type = new FunctionType(type, params, tparams); // type = parseDeclaratorSuffix(type); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new FunctionDeclaration(ident, type, null, funcBody); } type = parseDeclaratorSuffix(type); @@ -474,8 +474,9 @@ return init; } - FunctionBody parseFunctionBody(FunctionBody func) + FunctionBody parseFunctionBody() { + auto func = new FunctionBody; while (1) { switch (token.type) @@ -1018,7 +1019,7 @@ assert(token.type == T.This); nT(); // Skip 'this' keyword. auto parameters = parseParameterList(); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new ConstructorDeclaration(parameters, funcBody); } @@ -1029,7 +1030,7 @@ require(T.This); require(T.LParen); require(T.RParen); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new DestructorDeclaration(funcBody); } @@ -1040,7 +1041,7 @@ nT(); // Skip 'this' keyword. require(T.LParen); require(T.RParen); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new StaticConstructorDeclaration(funcBody); } @@ -1052,7 +1053,7 @@ require(T.This); require(T.LParen); require(T.RParen); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new StaticDestructorDeclaration(funcBody); } @@ -1063,7 +1064,7 @@ // Optional () for getting ready porting to D 2.0 if (token.type == T.LParen) requireNext(T.RParen); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new InvariantDeclaration(funcBody); } @@ -1072,7 +1073,7 @@ assert(token.type == T.Unittest); nT(); // Skip unittest keyword. - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new UnittestDeclaration(funcBody); } @@ -1264,7 +1265,7 @@ assert(token.type == T.New); nT(); // Skip new keyword. auto parameters = parseParameterList(); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new NewDeclaration(parameters, funcBody); } @@ -1274,7 +1275,7 @@ nT(); // Skip delete keyword. auto parameters = parseParameterList(); // TODO: only one parameter of type void* allowed. Check in parsing or semantic phase? - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); return new DeleteDeclaration(parameters, funcBody); } @@ -2916,7 +2917,7 @@ case T.LBrace: // DelegateLiteral := { Statements } // auto funcType = new FunctionType(null, Parameters.init); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); e = new FunctionLiteralExpression(null, funcBody); break; case T.Function, T.Delegate: @@ -2932,7 +2933,7 @@ parameters = parseParameterList(); } auto funcType = new FunctionType(returnType, parameters); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); e = new FunctionLiteralExpression(funcType, funcBody/+, funcTok+/); break; case T.Assert: @@ -3024,7 +3025,7 @@ auto parameters = parseParameterList(); // ( ParameterList ) FunctionBody auto funcType = new FunctionType(null, parameters); - auto funcBody = parseFunctionBody(new FunctionBody); + auto funcBody = parseFunctionBody(); e = new FunctionLiteralExpression(funcType, funcBody); } else