Ignore:
Timestamp:
Jan 4, 2006, 1:44:25 PM (19 years ago)
Author:
ggaren
Message:

Patch by [email protected], reviewed by darin, tweaked by me.

  • kjs/function_object.cpp: (FunctionObjectImp::construct):
  • kjs/lexer.cpp: (Lexer::shift): (Lexer::lex): (Lexer::isWhiteSpace): (Lexer::isLineTerminator): (Lexer::isIdentStart): (Lexer::isIdentPart): (isDecimalDigit): (Lexer::scanRegExp):
  • kjs/lexer.h: (KJS::Lexer::):
  • tests/mozilla/expected.html: Updated test results.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/function_object.cpp

    r11527 r11879  
    222222  FunctionBodyNode *bodyNode = progNode.get();
    223223
    224   FunctionImp *fimp = new DeclaredFunctionImp(exec, Identifier::null(), bodyNode,
    225                                               scopeChain);
    226 
     224  FunctionImp *fimp = new DeclaredFunctionImp(exec, Identifier::null(), bodyNode, scopeChain);
     225 
    227226  // parse parameter list. throw syntax error on illegal identifiers
    228227  int len = p.size();
     
    232231  while (i < len) {
    233232      while (*c == ' ' && i < len)
    234           c++, i++;
    235       if (Lexer::isIdentLetter(c->uc)) {  // else error
    236           param = UString(c, 1);
    237           c++, i++;
    238           while (i < len && (Lexer::isIdentLetter(c->uc) ||
    239                              Lexer::isDecimalDigit(c->uc))) {
    240               param += UString(c, 1);
    241               c++, i++;
    242           }
    243           while (i < len && *c == ' ')
    244               c++, i++;
    245           if (i == len) {
    246               fimp->addParameter(Identifier(param));
    247               params++;
    248               break;
    249           } else if (*c == ',') {
    250               fimp->addParameter(Identifier(param));
    251               params++;
    252               c++, i++;
    253               continue;
    254           } // else error
     233          c++, i++;
     234      if (Lexer::isIdentStart(c->uc)) {  // else error
     235          param = UString(c, 1);
     236          c++, i++;
     237          while (i < len && (Lexer::isIdentPart(c->uc))) {
     238              param += UString(c, 1);
     239              c++, i++;
     240          }
     241          while (i < len && *c == ' ')
     242              c++, i++;
     243          if (i == len) {
     244              fimp->addParameter(Identifier(param));
     245              params++;
     246              break;
     247          } else if (*c == ',') {
     248              fimp->addParameter(Identifier(param));
     249              params++;
     250              c++, i++;
     251              continue;
     252          } // else error
    255253      }
    256254      return throwError(exec, SyntaxError, "Syntax error in parameter list");
    257255  }
    258 
     256 
    259257  List consArgs;
    260258
Note: See TracChangeset for help on using the changeset viewer.