• marja@chromium.org's avatar
    Make strict more error messages about "eval" and "arguments" less specific. · 81504642
    marja@chromium.org authored
    We used to have error messages which provide context, like "Variable name may
    not be eval or arguments in strict mode", but for other illegal words we only
    have non-context specific error messages like "Unexpected reserved word".
    
    Providing the context makes the code unnecessarily complex, since every
    individual place must remember to check for eval or arguments. This CL produces
    a unified error message ("Unexpected eval or arguments in strict mode"), and puts
    the error reporting to (Pre)Parser::ParseIdentifier.
    
    Notes:
    
    - The module feature is so experimental, that I decided to not allow "eval" or
    "arguments" as module-related identifiers in the strict mode (even though this
    check wasn't there before).
    
    - Unfortunately, there were some inconsistencies, since it was the
    responsibility of the caller of ParseIdentifier to check "eval" and "arguments"
    and some places didn't have the check for no good reason. This CL is supposed to
    keep backward compatibility and *not* introduce any new errors.
    
    - ECMA allows "eval" and "arguments" as labels even in strict mode. (Syntax:
    "LabelledStatement: Identifier : Statement", and no strict mode restrictions on
    Identifier are listed.)
    
    - Tests which compare error message strings will fail, and need to be updated.
    
    BUG=3126
    LOG=N
    R=ulan@chromium.org
    
    Review URL: https://codereview.chromium.org/152813005
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    81504642
messages.js 50.7 KB