Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: test/cctest/test-parsing.cc

Issue 1632303002: Treat yield expressions as an AssignmentPattern error (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2350 matching lines...) Expand 10 before | Expand all | Expand 10 after
2361 // If there is a newline before the next token, we don't look for RHS. 2361 // If there is a newline before the next token, we don't look for RHS.
2362 "yield\nfor (;;) {}", 2362 "yield\nfor (;;) {}",
2363 NULL 2363 NULL
2364 }; 2364 };
2365 2365
2366 RunParserSyncTest(context_data, statement_data, kSuccess); 2366 RunParserSyncTest(context_data, statement_data, kSuccess);
2367 } 2367 }
2368 2368
2369 2369
2370 TEST(ErrorsYieldGenerator) { 2370 TEST(ErrorsYieldGenerator) {
2371 // clang-format off
2371 const char* context_data[][2] = { 2372 const char* context_data[][2] = {
2372 { "function * gen() {", "}" }, 2373 { "function * gen() {", "}" },
2373 { "\"use strict\"; function * gen() {", "}" }, 2374 { "\"use strict\"; function * gen() {", "}" },
2374 { NULL, NULL } 2375 { NULL, NULL }
2375 }; 2376 };
2376 2377
2377 const char* statement_data[] = { 2378 const char* statement_data[] = {
2378 // Invalid yield expressions inside generators. 2379 // Invalid yield expressions inside generators.
2379 "var yield;", 2380 "var yield;",
2380 "var foo, yield;", 2381 "var foo, yield;",
(...skipping 20 matching lines...) Expand all
2401 "yield / yield", 2402 "yield / yield",
2402 "+ yield", 2403 "+ yield",
2403 "+ yield 3", 2404 "+ yield 3",
2404 // Invalid (no newline allowed between yield and *). 2405 // Invalid (no newline allowed between yield and *).
2405 "yield\n*3", 2406 "yield\n*3",
2406 // Invalid (we see a newline, so we parse {yield:42} as a statement, not an 2407 // Invalid (we see a newline, so we parse {yield:42} as a statement, not an
2407 // object literal, and yield is not a valid label). 2408 // object literal, and yield is not a valid label).
2408 "yield\n{yield: 42}", 2409 "yield\n{yield: 42}",
2409 "yield /* comment */\n {yield: 42}", 2410 "yield /* comment */\n {yield: 42}",
2410 "yield //comment\n {yield: 42}", 2411 "yield //comment\n {yield: 42}",
2412 // Destructuring binding and assignment are both disallowed
2413 "var [yield] = [42];",
2414 "var {foo: yield} = {a: 42};",
2415 "[yield] = [42];",
2416 "({a: yield} = {a: 42});",
2417 // Also disallow full yield expressions on LHS
2418 "var [yield 24] = [42];",
2419 "var {foo: yield 24} = {a: 42};",
2420 "[yield 24] = [42];",
2421 "({a: yield 24} = {a: 42});",
rossberg 2016/01/26 19:33:09 Maybe add cases for {[yield]: x} = {...}, just to
adamk 2016/01/26 19:39:57 Do you mean for valid parsing of {[yield]: x} (tha
rossberg 2016/01/26 19:56:26 The former.
2411 NULL 2422 NULL
2412 }; 2423 };
2424 // clang-format on
2413 2425
2414 RunParserSyncTest(context_data, statement_data, kError); 2426 RunParserSyncTest(context_data, statement_data, kError);
2415 } 2427 }
2416 2428
2417 2429
2418 TEST(ErrorsNameOfStrictFunction) { 2430 TEST(ErrorsNameOfStrictFunction) {
2419 // Tests that illegal tokens as names of a strict function produce the correct 2431 // Tests that illegal tokens as names of a strict function produce the correct
2420 // errors. 2432 // errors.
2421 const char* context_data[][2] = { 2433 const char* context_data[][2] = {
2422 { "function ", ""}, 2434 { "function ", ""},
(...skipping 5533 matching lines...) Expand 10 before | Expand all | Expand 10 after
7956 } 7968 }
7957 7969
7958 7970
7959 TEST(MiscSyntaxErrors) { 7971 TEST(MiscSyntaxErrors) {
7960 const char* context_data[][2] = { 7972 const char* context_data[][2] = {
7961 {"'use strict'", ""}, {"", ""}, {NULL, NULL}}; 7973 {"'use strict'", ""}, {"", ""}, {NULL, NULL}};
7962 const char* error_data[] = {"for (();;) {}", NULL}; 7974 const char* error_data[] = {"for (();;) {}", NULL};
7963 7975
7964 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); 7976 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0);
7965 } 7977 }
OLDNEW
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698