Changeset 90535 in webkit


Ignore:
Timestamp:
Jul 6, 2011 9:20:06 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-07-06 Juan C. Montemayor <jmont@apple.com>

ASSERT_NOT_REACHED running test 262
https://bugs.webkit.org/show_bug.cgi?id=63951

Added a test to check compliance with reserved words in strict mode.
Updated test results.

Reviewed by Gavin Barraclough.

  • fast/js/kde/parse-expected.txt:
  • fast/js/reserved-words-as-property-expected.txt:
  • fast/js/reserved-words-strict-expected.txt: Added.
  • fast/js/reserved-words-strict.html: Added.
  • fast/js/script-tests/reserved-words-strict.js: Added. (isReserved):
  • platform/chromium/fast/js/reserved-words-strict-expected.txt: Added.
  • sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3-expected.txt:
  • sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4-expected.txt:
  • sputnik/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13-expected.txt:

2011-07-06 Juan C. Montemayor <jmont@apple.com>

ASSERT_NOT_REACHED running test 262
https://bugs.webkit.org/show_bug.cgi?id=63951

Added a case to the switch statement where the code was failing. Fixed
some logic as well that gave faulty error messages.

Reviewed by Gavin Barraclough.

  • parser/JSParser.cpp: (JSC::JSParser::getTokenName): (JSC::JSParser::updateErrorMessageSpecialCase): (JSC::JSParser::updateErrorMessage):
Location:
trunk
Files:
4 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r90518 r90535  
     12011-07-06  Juan C. Montemayor  <jmont@apple.com>
     2
     3        ASSERT_NOT_REACHED running test 262
     4        https://bugs.webkit.org/show_bug.cgi?id=63951
     5       
     6        Added a test to check compliance with reserved words in strict mode.
     7        Updated test results.
     8
     9        Reviewed by Gavin Barraclough.
     10
     11        * fast/js/kde/parse-expected.txt:
     12        * fast/js/reserved-words-as-property-expected.txt:
     13        * fast/js/reserved-words-strict-expected.txt: Added.
     14        * fast/js/reserved-words-strict.html: Added.
     15        * fast/js/script-tests/reserved-words-strict.js: Added.
     16        (isReserved):
     17        * platform/chromium/fast/js/reserved-words-strict-expected.txt: Added.
     18        * sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1-expected.txt:
     19        * sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2-expected.txt:
     20        * sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3-expected.txt:
     21        * sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4-expected.txt:
     22        * sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5-expected.txt:
     23        * sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1-expected.txt:
     24        * sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2-expected.txt:
     25        * sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3-expected.txt:
     26        * sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4-expected.txt:
     27        * sputnik/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13-expected.txt:
     28
    1292011-07-06  Johnny Ding  <jnd@chromium.org>
    230
  • trunk/LayoutTests/fast/js/kde/parse-expected.txt

    r90265 r90535  
    2121PASS var f\u0030 = 103; f0 is 103
    2222PASS var \u00E9\u0100\u02AF\u0388\u18A8 = 104; \u00E9\u0100\u02AF\u0388\u18A8; is 104
    23 PASS var f\u00F7; threw exception SyntaxError: Expected an identifier but found 'f\u00F7' instead.
    24 PASS var \u0030; threw exception SyntaxError: Expected an identifier but found '\u0030' instead.
    25 PASS var test = { }; test.i= 0; test.i\u002b= 1; test.i; threw exception SyntaxError: Expected an identifier but found 'i\u002b' instead.
     23PASS var f\u00F7; threw exception SyntaxError: Unrecognized token 'f\u00F7'.
     24PASS var \u0030; threw exception SyntaxError: Unrecognized token '\u0030'.
     25PASS var test = { }; test.i= 0; test.i\u002b= 1; test.i; threw exception SyntaxError: Unrecognized token 'i\u002b'.
    2626PASS var test = { }; test.i= 0; test.i+= 1; test.i; is 1
    2727PASS successfullyParsed is true
  • trunk/LayoutTests/fast/js/reserved-words-as-property-expected.txt

    r89257 r90535  
    156156PASS function new(){} threw exception SyntaxError: Unexpected token 'new'.
    157157PASS (function(){function new(){}}) threw exception SyntaxError: Unexpected token 'new'.
    158 PASS var return threw exception SyntaxError: Expected an identifier but found 'return' instead.
    159 PASS (function(){var return}) threw exception SyntaxError: Expected an identifier but found 'return' instead.
    160 PASS function g(return){} threw exception SyntaxError: Expected an identifier but found 'return' instead.
    161 PASS (function(){function g(return){}}) threw exception SyntaxError: Expected an identifier but found 'return' instead.
    162 PASS try{}catch(return){} threw exception SyntaxError: Expected an identifier but found 'return' instead.
    163 PASS (function(){try{}catch(return){}}) threw exception SyntaxError: Expected an identifier but found 'return' instead.
     158PASS var return threw exception SyntaxError: Return statements are only valid inside functions.
     159PASS (function(){var return}) threw exception SyntaxError: Return statements are only valid inside functions.
     160PASS function g(return){} threw exception SyntaxError: Return statements are only valid inside functions.
     161PASS (function(){function g(return){}}) threw exception SyntaxError: Return statements are only valid inside functions.
     162PASS try{}catch(return){} threw exception SyntaxError: Return statements are only valid inside functions.
     163PASS (function(){try{}catch(return){}}) threw exception SyntaxError: Return statements are only valid inside functions.
    164164PASS function return(){} threw exception SyntaxError: Return statements are only valid inside functions.
    165165PASS (function(){function return(){}}) threw exception SyntaxError: Return statements are only valid inside functions.
     
    236236PASS function with(){} threw exception SyntaxError: Unexpected token 'with'.
    237237PASS (function(){function with(){}}) threw exception SyntaxError: Unexpected token 'with'.
    238 PASS var class threw exception SyntaxError: Expected an identifier but found 'class' instead.
    239 PASS (function(){var class}) threw exception SyntaxError: Expected an identifier but found 'class' instead.
    240 PASS function g(class){} threw exception SyntaxError: Expected an identifier but found 'class' instead.
    241 PASS (function(){function g(class){}}) threw exception SyntaxError: Expected an identifier but found 'class' instead.
    242 PASS try{}catch(class){} threw exception SyntaxError: Expected an identifier but found 'class' instead.
    243 PASS (function(){try{}catch(class){}}) threw exception SyntaxError: Expected an identifier but found 'class' instead.
     238PASS var class threw exception SyntaxError: Use of reserved word 'class'.
     239PASS (function(){var class}) threw exception SyntaxError: Use of reserved word 'class'.
     240PASS function g(class){} threw exception SyntaxError: Use of reserved word 'class'.
     241PASS (function(){function g(class){}}) threw exception SyntaxError: Use of reserved word 'class'.
     242PASS try{}catch(class){} threw exception SyntaxError: Use of reserved word 'class'.
     243PASS (function(){try{}catch(class){}}) threw exception SyntaxError: Use of reserved word 'class'.
    244244PASS function class(){} threw exception SyntaxError: Use of reserved word 'class'.
    245245PASS (function(){function class(){}}) threw exception SyntaxError: Use of reserved word 'class'.
     
    252252PASS function const(){} threw exception SyntaxError: Unexpected token 'const'.
    253253PASS (function(){function const(){}}) threw exception SyntaxError: Unexpected token 'const'.
    254 PASS var enum threw exception SyntaxError: Expected an identifier but found 'enum' instead.
    255 PASS (function(){var enum}) threw exception SyntaxError: Expected an identifier but found 'enum' instead.
    256 PASS function g(enum){} threw exception SyntaxError: Expected an identifier but found 'enum' instead.
    257 PASS (function(){function g(enum){}}) threw exception SyntaxError: Expected an identifier but found 'enum' instead.
    258 PASS try{}catch(enum){} threw exception SyntaxError: Expected an identifier but found 'enum' instead.
    259 PASS (function(){try{}catch(enum){}}) threw exception SyntaxError: Expected an identifier but found 'enum' instead.
     254PASS var enum threw exception SyntaxError: Use of reserved word 'enum'.
     255PASS (function(){var enum}) threw exception SyntaxError: Use of reserved word 'enum'.
     256PASS function g(enum){} threw exception SyntaxError: Use of reserved word 'enum'.
     257PASS (function(){function g(enum){}}) threw exception SyntaxError: Use of reserved word 'enum'.
     258PASS try{}catch(enum){} threw exception SyntaxError: Use of reserved word 'enum'.
     259PASS (function(){try{}catch(enum){}}) threw exception SyntaxError: Use of reserved word 'enum'.
    260260PASS function enum(){} threw exception SyntaxError: Use of reserved word 'enum'.
    261261PASS (function(){function enum(){}}) threw exception SyntaxError: Use of reserved word 'enum'.
    262 PASS var export threw exception SyntaxError: Expected an identifier but found 'export' instead.
    263 PASS (function(){var export}) threw exception SyntaxError: Expected an identifier but found 'export' instead.
    264 PASS function g(export){} threw exception SyntaxError: Expected an identifier but found 'export' instead.
    265 PASS (function(){function g(export){}}) threw exception SyntaxError: Expected an identifier but found 'export' instead.
    266 PASS try{}catch(export){} threw exception SyntaxError: Expected an identifier but found 'export' instead.
    267 PASS (function(){try{}catch(export){}}) threw exception SyntaxError: Expected an identifier but found 'export' instead.
     262PASS var export threw exception SyntaxError: Use of reserved word 'export'.
     263PASS (function(){var export}) threw exception SyntaxError: Use of reserved word 'export'.
     264PASS function g(export){} threw exception SyntaxError: Use of reserved word 'export'.
     265PASS (function(){function g(export){}}) threw exception SyntaxError: Use of reserved word 'export'.
     266PASS try{}catch(export){} threw exception SyntaxError: Use of reserved word 'export'.
     267PASS (function(){try{}catch(export){}}) threw exception SyntaxError: Use of reserved word 'export'.
    268268PASS function export(){} threw exception SyntaxError: Use of reserved word 'export'.
    269269PASS (function(){function export(){}}) threw exception SyntaxError: Use of reserved word 'export'.
    270 PASS var extends threw exception SyntaxError: Expected an identifier but found 'extends' instead.
    271 PASS (function(){var extends}) threw exception SyntaxError: Expected an identifier but found 'extends' instead.
    272 PASS function g(extends){} threw exception SyntaxError: Expected an identifier but found 'extends' instead.
    273 PASS (function(){function g(extends){}}) threw exception SyntaxError: Expected an identifier but found 'extends' instead.
    274 PASS try{}catch(extends){} threw exception SyntaxError: Expected an identifier but found 'extends' instead.
    275 PASS (function(){try{}catch(extends){}}) threw exception SyntaxError: Expected an identifier but found 'extends' instead.
     270PASS var extends threw exception SyntaxError: Use of reserved word 'extends'.
     271PASS (function(){var extends}) threw exception SyntaxError: Use of reserved word 'extends'.
     272PASS function g(extends){} threw exception SyntaxError: Use of reserved word 'extends'.
     273PASS (function(){function g(extends){}}) threw exception SyntaxError: Use of reserved word 'extends'.
     274PASS try{}catch(extends){} threw exception SyntaxError: Use of reserved word 'extends'.
     275PASS (function(){try{}catch(extends){}}) threw exception SyntaxError: Use of reserved word 'extends'.
    276276PASS function extends(){} threw exception SyntaxError: Use of reserved word 'extends'.
    277277PASS (function(){function extends(){}}) threw exception SyntaxError: Use of reserved word 'extends'.
    278 PASS var import threw exception SyntaxError: Expected an identifier but found 'import' instead.
    279 PASS (function(){var import}) threw exception SyntaxError: Expected an identifier but found 'import' instead.
    280 PASS function g(import){} threw exception SyntaxError: Expected an identifier but found 'import' instead.
    281 PASS (function(){function g(import){}}) threw exception SyntaxError: Expected an identifier but found 'import' instead.
    282 PASS try{}catch(import){} threw exception SyntaxError: Expected an identifier but found 'import' instead.
    283 PASS (function(){try{}catch(import){}}) threw exception SyntaxError: Expected an identifier but found 'import' instead.
     278PASS var import threw exception SyntaxError: Use of reserved word 'import'.
     279PASS (function(){var import}) threw exception SyntaxError: Use of reserved word 'import'.
     280PASS function g(import){} threw exception SyntaxError: Use of reserved word 'import'.
     281PASS (function(){function g(import){}}) threw exception SyntaxError: Use of reserved word 'import'.
     282PASS try{}catch(import){} threw exception SyntaxError: Use of reserved word 'import'.
     283PASS (function(){try{}catch(import){}}) threw exception SyntaxError: Use of reserved word 'import'.
    284284PASS function import(){} threw exception SyntaxError: Use of reserved word 'import'.
    285285PASS (function(){function import(){}}) threw exception SyntaxError: Use of reserved word 'import'.
    286 PASS var super threw exception SyntaxError: Expected an identifier but found 'super' instead.
    287 PASS (function(){var super}) threw exception SyntaxError: Expected an identifier but found 'super' instead.
    288 PASS function g(super){} threw exception SyntaxError: Expected an identifier but found 'super' instead.
    289 PASS (function(){function g(super){}}) threw exception SyntaxError: Expected an identifier but found 'super' instead.
    290 PASS try{}catch(super){} threw exception SyntaxError: Expected an identifier but found 'super' instead.
    291 PASS (function(){try{}catch(super){}}) threw exception SyntaxError: Expected an identifier but found 'super' instead.
     286PASS var super threw exception SyntaxError: Use of reserved word 'super'.
     287PASS (function(){var super}) threw exception SyntaxError: Use of reserved word 'super'.
     288PASS function g(super){} threw exception SyntaxError: Use of reserved word 'super'.
     289PASS (function(){function g(super){}}) threw exception SyntaxError: Use of reserved word 'super'.
     290PASS try{}catch(super){} threw exception SyntaxError: Use of reserved word 'super'.
     291PASS (function(){try{}catch(super){}}) threw exception SyntaxError: Use of reserved word 'super'.
    292292PASS function super(){} threw exception SyntaxError: Use of reserved word 'super'.
    293293PASS (function(){function super(){}}) threw exception SyntaxError: Use of reserved word 'super'.
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T1-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u0009' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u0009'
    22S7.2_A5_T1
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T2-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u000B' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u000B'
    22S7.2_A5_T2
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T3-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u000C' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u000C'
    22S7.2_A5_T3
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T4-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u0020' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u0020'
    22S7.2_A5_T4
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.2_White_Space/S7.2_A5_T5-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u00A0' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u00A0'
    22S7.2_A5_T5
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T1-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u000A' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u000A'
    22S7.3_A6_T1
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T2-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u000D' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u000D'
    22S7.3_A6_T2
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T3-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u2028' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u2028'
    22S7.3_A6_T3
    33
  • trunk/LayoutTests/sputnik/Conformance/07_Lexical_Conventions/7.3_Line_Terminators/S7.3_A6_T4-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 76: SyntaxError: Expected an identifier but found '\u2029' instead
     1CONSOLE MESSAGE: line 76: SyntaxError: Unrecognized token '\u2029'
    22S7.3_A6_T4
    33
  • trunk/LayoutTests/sputnik/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T13-expected.txt

    r89257 r90535  
    1 CONSOLE MESSAGE: line 80: SyntaxError: Expected an identifier but found '"22"' instead
     1CONSOLE MESSAGE: line 80: SyntaxError: Unexpected string "22"
    22S12.14_A16_T13
    33
  • trunk/Source/JavaScriptCore/ChangeLog

    r90533 r90535  
     12011-07-06  Juan C. Montemayor  <jmont@apple.com>
     2
     3        ASSERT_NOT_REACHED running test 262
     4        https://bugs.webkit.org/show_bug.cgi?id=63951
     5       
     6        Added a case to the switch statement where the code was failing. Fixed
     7        some logic as well that gave faulty error messages.
     8
     9        Reviewed by Gavin Barraclough.
     10
     11        * parser/JSParser.cpp:
     12        (JSC::JSParser::getTokenName):
     13        (JSC::JSParser::updateErrorMessageSpecialCase):
     14        (JSC::JSParser::updateErrorMessage):
     15
    1162011-07-06  Filip Pizlo  <fpizlo@apple.com>
    217
  • trunk/Source/JavaScriptCore/parser/JSParser.cpp

    r89371 r90535  
    192192        case FUNCTION:
    193193            return "function";
    194         case RETURN:
    195             return 0;
    196194        case IF:
    197195            return "if";
     
    206204        case WITH:
    207205            return "with";
    208         case RESERVED_IF_STRICT:
    209         case RESERVED:
    210             return 0;
    211206        case THROW:
    212207            return "throw";
     
    237232        case QUESTION:
    238233            return "?";
    239         case NUMBER:
    240             return 0;
    241         case IDENT:
    242             return 0;
    243         case STRING:
    244             return 0;
    245234        case SEMICOLON:
    246235            return ";";
     
    249238        case DOT:
    250239            return ".";
    251         case ERRORTOK:
    252             return 0;
    253         case EOFTOK:
    254             return 0;
    255240        case EQUAL:
    256241            return "=";
     
    339324        case MOD:
    340325            return "%";
     326        case RETURN:
     327        case RESERVED_IF_STRICT:
     328        case RESERVED:
     329        case NUMBER:
     330        case IDENT:
     331        case STRING:
     332        case ERRORTOK:
     333        case EOFTOK:
     334            return 0;
    341335        case LastUntaggedToken:
    342336            break;
     
    350344        String errorMessage;
    351345        switch (expectedToken) {
     346        case RESERVED_IF_STRICT:
     347            errorMessage = "Use of reserved word '";
     348            errorMessage += getToken().impl();
     349            errorMessage += "' in strict mode";
     350            m_errorMessage = errorMessage.impl();
     351            return;
    352352        case RESERVED:
    353353            errorMessage = "Use of reserved word '";
     
    406406        m_error = true;
    407407        const char* name = getTokenName(expectedToken);
    408         if (!name)
    409             updateErrorMessageSpecialCase(expectedToken);
    410         else
     408        if (name)
    411409            m_errorMessage = UString(String::format("Expected token '%s'", name).impl());
     410        else {
     411            if (!getTokenName(m_token.m_type))
     412                updateErrorMessageSpecialCase(m_token.m_type);
     413            else
     414                updateErrorMessageSpecialCase(expectedToken);
     415        }
    412416    }
    413417   
Note: See TracChangeset for help on using the changeset viewer.