| Index: src/preparser.h
|
| diff --git a/src/preparser.h b/src/preparser.h
|
| index 697ef6ecc8123850fd8470e881a0e5c914bdf0d7..4b236c9dacac235be191e53d7217b12a3c18b64d 100644
|
| --- a/src/preparser.h
|
| +++ b/src/preparser.h
|
| @@ -186,8 +186,7 @@ class PreParser {
|
| Expression ParseLeftHandSideExpression(bool* ok);
|
| Expression ParseNewExpression(bool* ok);
|
| Expression ParseMemberExpression(bool* ok);
|
| - Expression ParseNewPrefix(int* new_count, bool* ok);
|
| - Expression ParseMemberWithNewPrefixesExpression(int* new_count, bool* ok);
|
| + Expression ParseMemberWithNewPrefixesExpression(unsigned new_count, bool* ok);
|
| Expression ParsePrimaryExpression(bool* ok);
|
| Expression ParseArrayLiteral(bool* ok);
|
| Expression ParseObjectLiteral(bool* ok);
|
| @@ -965,9 +964,8 @@ Expression PreParser<Scanner, Log>::ParseLeftHandSideExpression(bool* ok) {
|
| }
|
|
|
|
|
| -
|
| template <typename Scanner, typename Log>
|
| -Expression PreParser<Scanner, Log>::ParseNewPrefix(int* new_count, bool* ok) {
|
| +Expression PreParser<Scanner, Log>::ParseNewExpression(bool* ok) {
|
| // NewExpression ::
|
| // ('new')+ MemberExpression
|
|
|
| @@ -979,38 +977,25 @@ Expression PreParser<Scanner, Log>::ParseNewPrefix(int* new_count, bool* ok) {
|
| // many we have parsed. This information is then passed on to the
|
| // member expression parser, which is only allowed to match argument
|
| // lists as long as it has 'new' prefixes left
|
| - Expect(Token::NEW, CHECK_OK);
|
| - *new_count++;
|
| -
|
| - if (peek() == Token::NEW) {
|
| - ParseNewPrefix(new_count, CHECK_OK);
|
| - } else {
|
| - ParseMemberWithNewPrefixesExpression(new_count, CHECK_OK);
|
| - }
|
| -
|
| - if (*new_count > 0) {
|
| - *new_count--;
|
| - }
|
| - return kUnknownExpression;
|
| -}
|
| -
|
| + unsigned new_count = 0;
|
| + do {
|
| + Consume(Token::NEW);
|
| + new_count++;
|
| + } while (peek() == Token::NEW);
|
|
|
| -template <typename Scanner, typename Log>
|
| -Expression PreParser<Scanner, Log>::ParseNewExpression(bool* ok) {
|
| - int new_count = 0;
|
| - return ParseNewPrefix(&new_count, ok);
|
| + return ParseMemberWithNewPrefixesExpression(new_count, ok);
|
| }
|
|
|
|
|
| template <typename Scanner, typename Log>
|
| Expression PreParser<Scanner, Log>::ParseMemberExpression(bool* ok) {
|
| - return ParseMemberWithNewPrefixesExpression(NULL, ok);
|
| + return ParseMemberWithNewPrefixesExpression(0, ok);
|
| }
|
|
|
|
|
| template <typename Scanner, typename Log>
|
| Expression PreParser<Scanner, Log>::ParseMemberWithNewPrefixesExpression(
|
| - int* new_count, bool* ok) {
|
| + unsigned new_count, bool* ok) {
|
| // MemberExpression ::
|
| // (PrimaryExpression | FunctionLiteral)
|
| // ('[' Expression ']' | '.' Identifier | Arguments)*
|
| @@ -1051,10 +1036,10 @@ Expression PreParser<Scanner, Log>::ParseMemberWithNewPrefixesExpression(
|
| break;
|
| }
|
| case Token::LPAREN: {
|
| - if ((new_count == NULL) || *new_count == 0) return result;
|
| + if (new_count == 0) return result;
|
| // Consume one of the new prefixes (already parsed).
|
| ParseArguments(CHECK_OK);
|
| - *new_count--;
|
| + new_count--;
|
| result = kUnknownExpression;
|
| break;
|
| }
|
|
|