Ignore:
Timestamp:
Apr 4, 2012, 5:56:54 PM (13 years ago)
Author:
[email protected]
Message:

Parser fails to revert some state after parsing expression and object literals.
https://bugs.webkit.org/show_bug.cgi?id=83236

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

Reset left hand side counter after parsing the literals.

  • parser/Parser.cpp:

(JSC::::parseObjectLiteral):
(JSC::::parseStrictObjectLiteral):
(JSC::::parseArrayLiteral):

LayoutTests:

Add more parser test cases.

  • fast/js/parser-syntax-check-expected.txt:
  • fast/js/script-tests/parser-syntax-check.js:
File:
1 edited

Legend:

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

    r112555 r113270  
    12571257    consumeOrFailWithFlags(OPENBRACE, TreeBuilder::DontBuildStrings);
    12581258   
     1259    int oldNonLHSCount = m_nonLHSCount;
     1260   
    12591261    if (match(CLOSEBRACE)) {
    12601262        next();
     
    12921294    consumeOrFail(CLOSEBRACE);
    12931295   
     1296    m_nonLHSCount = oldNonLHSCount;
     1297   
    12941298    return context.createObjectLiteral(m_lexer->lastLineNumber(), propertyList);
    12951299}
     
    13001304    consumeOrFail(OPENBRACE);
    13011305   
     1306    int oldNonLHSCount = m_nonLHSCount;
     1307
    13021308    if (match(CLOSEBRACE)) {
    13031309        next();
     
    13361342   
    13371343    consumeOrFail(CLOSEBRACE);
    1338    
     1344
     1345    m_nonLHSCount = oldNonLHSCount;
     1346
    13391347    return context.createObjectLiteral(m_lexer->lastLineNumber(), propertyList);
    13401348}
     
    13441352{
    13451353    consumeOrFailWithFlags(OPENBRACKET, TreeBuilder::DontBuildStrings);
     1354   
     1355    int oldNonLHSCount = m_nonLHSCount;
    13461356   
    13471357    int elisions = 0;
     
    13791389   
    13801390    consumeOrFail(CLOSEBRACKET);
     1391   
     1392    m_nonLHSCount = oldNonLHSCount;
    13811393   
    13821394    return context.createArray(m_lexer->lastLineNumber(), elementList);
Note: See TracChangeset for help on using the changeset viewer.