2011-01-16 Oliver Hunt <oliver@apple.com>
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 16 Jan 2011 23:54:40 +0000 (23:54 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 16 Jan 2011 23:54:40 +0000 (23:54 +0000)
commit621d6c8ac55e5be0ba337c077ce3a98b5037c2ad
treed5e3cd3a0494ccd6c0ae7b34b0dbd8d890131a52
parent395105fdc8da23cbe47299300e63ec918fd24342
2011-01-16  Oliver Hunt  <oliver@apple.com>

        Reviewed by Geoffrey Garen.

        Strict mode restrictions on arguments and eval usage aren't complete
        https://bugs.webkit.org/show_bug.cgi?id=52528

        Add a helper function to aid parse failure tests by testing both direct
        eval/global code, and nested code (so that we test the syntax checker
        mode as well)

        * fast/js/basic-strict-mode-expected.txt:
        * fast/js/script-tests/basic-strict-mode.js:
        (shouldBeSyntaxError):
2011-01-16  Oliver Hunt  <oliver@apple.com>

        Reviewed by Geoffrey Garen.

        Strict mode restrictions on arguments and eval usage aren't complete
        https://bugs.webkit.org/show_bug.cgi?id=52528

        Fix a few bugs in strict mode where we incorrect allow mutation of
        arguments and eval in the parser.

        Alas the "optimisation" used by the syntax checker for validating
        binary and unary expressions was too aggressive: we do actually need
        a stack for operations and operands although it needn't be as complete
        as that used for the full AST builder.

        Also disallow assignment to arguments in all cases as allowing arguments
        to be assignable is always an error in strict mode, regardless of context.

        * parser/ASTBuilder.h:
        (JSC::ASTBuilder::BinaryExprContext::BinaryExprContext):
        (JSC::ASTBuilder::UnaryExprContext::UnaryExprContext):
        * parser/JSParser.cpp:
        (JSC::JSParser::parseAssignmentExpression):
        (JSC::JSParser::parseBinaryExpression):
        (JSC::JSParser::parseUnaryExpression):
        * parser/SyntaxChecker.h:
        (JSC::SyntaxChecker::BinaryExprContext::BinaryExprContext):
        (JSC::SyntaxChecker::BinaryExprContext::~BinaryExprContext):
        (JSC::SyntaxChecker::UnaryExprContext::UnaryExprContext):
        (JSC::SyntaxChecker::UnaryExprContext::~UnaryExprContext):
        (JSC::SyntaxChecker::appendBinaryExpressionInfo):
        (JSC::SyntaxChecker::operatorStackPop):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@75896 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/fast/js/basic-strict-mode-expected.txt
LayoutTests/fast/js/script-tests/basic-strict-mode.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/parser/ASTBuilder.h
Source/JavaScriptCore/parser/JSParser.cpp
Source/JavaScriptCore/parser/SyntaxChecker.h