Mercurial > projects > ddmd
diff dmd/Parser.d @ 123:9e39c7de8438
Make dmd test suite compile
author | korDen |
---|---|
date | Fri, 03 Sep 2010 20:46:58 +0400 |
parents | c77e9f4f1793 |
children | 767a01c2a272 |
line wrap: on
line diff
--- a/dmd/Parser.d Thu Sep 02 23:37:49 2010 +0100 +++ b/dmd/Parser.d Fri Sep 03 20:46:58 2010 +0400 @@ -1718,14 +1718,44 @@ return f; } + /***************************************** + * Parse a new definition: + * new(arguments) { body } + * Current token is 'new'. + */ NewDeclaration parseNew() { - assert(false); + NewDeclaration f; + scope Arguments arguments = new Arguments(); + int varargs; + Loc loc = this.loc; + + nextToken(); + arguments = parseParameters(&varargs); + f = new NewDeclaration(loc, Loc(0), arguments, varargs); + parseContracts(f); + return f; } + /***************************************** + * Parse a delete definition: + * delete(arguments) { body } + * Current token is 'delete'. + */ DeleteDeclaration parseDelete() { - assert(false); + DeleteDeclaration f; + scope Arguments arguments; + int varargs; + Loc loc = this.loc; + + nextToken(); + arguments = parseParameters(&varargs); + if (varargs) + error("... not allowed in delete function parameter list"); + f = new DeleteDeclaration(loc, Loc(0), arguments); + parseContracts(f); + return f; } Arguments parseParameters(int* pvarargs)