Ignore:
Timestamp:
Dec 20, 2010, 5:02:31 PM (14 years ago)
Author:
[email protected]
Message:

2010-12-20 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

|delete name| in strict mode code should be an early error
https://bugs.webkit.org/show_bug.cgi?id=50431

Disallow the |delete IDENTIFIER| production in strict mode, and removed
a bunch of now unnecessary code.

  • parser/JSParser.cpp: (JSC::JSParser::Scope::collectFreeVariables): (JSC::jsParse): (JSC::JSParser::parseProgram): (JSC::JSParser::parseUnaryExpression):
  • parser/JSParser.h:
  • parser/Parser.cpp: (JSC::Parser::parse):
  • parser/Parser.h: (JSC::Parser::parse):

2010-12-20 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

|delete name| in strict mode code should be an early error
https://bugs.webkit.org/show_bug.cgi?id=50431

Add a test to ensure that |delete IDENTIFIER| is disallowed, even if
IDENTIFIER resolves to a deletable property.

  • fast/js/basic-strict-mode-expected.txt:
  • fast/js/script-tests/basic-strict-mode.js:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/parser/Parser.cpp

    r70406 r74377  
    3030namespace JSC {
    3131
    32 void Parser::parse(JSGlobalObject* lexicalGlobalObject, FunctionParameters* parameters, JSParserStrictness strictness, JSParserMode mode, int* errLine, UString* errMsg)
     32void Parser::parse(JSGlobalData* globalData, FunctionParameters* parameters, JSParserStrictness strictness, JSParserMode mode, int* errLine, UString* errMsg)
    3333{
    34     ASSERT(lexicalGlobalObject);
     34    ASSERT(globalData);
    3535    m_sourceElements = 0;
    3636
     
    4646    *errMsg = UString();
    4747
    48     Lexer& lexer = *lexicalGlobalObject->globalData().lexer;
     48    Lexer& lexer = *globalData->lexer;
    4949    lexer.setCode(*m_source, m_arena);
    5050
    51     int parseError = jsParse(lexicalGlobalObject, parameters, strictness, mode, m_source);
     51    int parseError = jsParse(globalData, parameters, strictness, mode, m_source);
    5252    int lineNumber = lexer.lineNumber();
    5353    bool lexError = lexer.sawError();
Note: See TracChangeset for help on using the changeset viewer.