Changeset 185414 in webkit


Ignore:
Timestamp:
Jun 10, 2015 6:25:38 AM (9 years ago)
Author:
Yusuke Suzuki
Message:

JavaScript: Drop the “escaped reserved words as identifiers” compatibility measure
https://bugs.webkit.org/show_bug.cgi?id=90678

Reviewed by Darin Adler.

After ES6, escaped reserved words in identifiers are prohibited.

  • parser/Lexer.cpp:

(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):

  • tests/stress/reserved-word-with-escape.js: Added.

(testSyntax):
(testSyntaxError):

Location:
trunk/Source/JavaScriptCore
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r185409 r185414  
     12015-06-10  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        JavaScript: Drop the “escaped reserved words as identifiers” compatibility measure
     4        https://bugs.webkit.org/show_bug.cgi?id=90678
     5
     6        Reviewed by Darin Adler.
     7
     8        After ES6, escaped reserved words in identifiers are prohibited.
     9
     10        * parser/Lexer.cpp:
     11        (JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
     12        * tests/stress/reserved-word-with-escape.js: Added.
     13        (testSyntax):
     14        (testSyntaxError):
     15
    1162015-06-10  Andreas Kling  <akling@apple.com>
    217
  • trunk/Source/JavaScriptCore/parser/Lexer.cpp

    r184337 r185414  
    10411041template<typename CharacterType> template<bool shouldCreateIdentifier> JSTokenType Lexer<CharacterType>::parseIdentifierSlowCase(JSTokenData* tokenData, unsigned lexerFlags, bool strictMode)
    10421042{
    1043     const ptrdiff_t remaining = m_codeEnd - m_code;
    10441043    auto identifierStart = currentSourcePtr();
    10451044    bool bufferRequired = false;
     
    10871086        tokenData->ident = nullptr;
    10881087
    1089     if (LIKELY(!bufferRequired && !(lexerFlags & LexerFlagsIgnoreReservedWords))) {
     1088    if (LIKELY(!(lexerFlags & LexerFlagsIgnoreReservedWords))) {
    10901089        ASSERT(shouldCreateIdentifier);
    1091         // Keywords must not be recognized if there was an \uXXXX in the identifier.
    1092         if (remaining < maxTokenLength) {
    1093             const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
    1094             ASSERT((remaining < maxTokenLength) || !entry);
    1095             if (!entry)
    1096                 return IDENT;
    1097             JSTokenType token = static_cast<JSTokenType>(entry->lexerValue());
    1098             return (token != RESERVED_IF_STRICT) || strictMode ? token : IDENT;
    1099         }
    1100         return IDENT;
     1090        const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
     1091        if (!entry)
     1092            return IDENT;
     1093        JSTokenType token = static_cast<JSTokenType>(entry->lexerValue());
     1094        return (token != RESERVED_IF_STRICT) || strictMode ? token : IDENT;
    11011095    }
    11021096
Note: See TracChangeset for help on using the changeset viewer.