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

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

Issue 2502633002: [parser] Only log messages using the pending error handling (Closed)
Patch Set: Delete more unused code Created 4 years, 1 month 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
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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 i::GetCurrentStackPosition() - 128 * 1024); 166 i::GetCurrentStackPosition() - 128 * 1024);
167 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); 167 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit();
168 for (int i = 0; tests[i]; i++) { 168 for (int i = 0; tests[i]; i++) {
169 const char* source = tests[i]; 169 const char* source = tests[i];
170 auto stream = i::ScannerStream::ForTesting(source); 170 auto stream = i::ScannerStream::ForTesting(source);
171 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 171 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
172 scanner.Initialize(stream.get()); 172 scanner.Initialize(stream.get());
173 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 173 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
174 i::AstValueFactory ast_value_factory( 174 i::AstValueFactory ast_value_factory(
175 &zone, CcTest::i_isolate()->heap()->HashSeed()); 175 &zone, CcTest::i_isolate()->heap()->HashSeed());
176 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 176 i::PendingCompilationErrorHandler pending_error_handler;
177 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
178 &pending_error_handler, stack_limit);
177 preparser.set_allow_lazy(true); 179 preparser.set_allow_lazy(true);
178 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 180 i::PreParser::PreParseResult result = preparser.PreParseProgram();
179 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 181 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
180 CHECK(!preparser.logger()->has_error()); 182 CHECK(!pending_error_handler.has_pending_error());
181 } 183 }
182 184
183 for (int i = 0; fail_tests[i]; i++) { 185 for (int i = 0; fail_tests[i]; i++) {
184 const char* source = fail_tests[i]; 186 const char* source = fail_tests[i];
185 auto stream = i::ScannerStream::ForTesting(source); 187 auto stream = i::ScannerStream::ForTesting(source);
186 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 188 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
187 scanner.Initialize(stream.get()); 189 scanner.Initialize(stream.get());
188 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 190 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
189 i::AstValueFactory ast_value_factory( 191 i::AstValueFactory ast_value_factory(
190 &zone, CcTest::i_isolate()->heap()->HashSeed()); 192 &zone, CcTest::i_isolate()->heap()->HashSeed());
191 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 193 i::PendingCompilationErrorHandler pending_error_handler;
194 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
195 &pending_error_handler, stack_limit);
192 preparser.set_allow_lazy(true); 196 preparser.set_allow_lazy(true);
193 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 197 i::PreParser::PreParseResult result = preparser.PreParseProgram();
194 // Even in the case of a syntax error, kPreParseSuccess is returned. 198 // Even in the case of a syntax error, kPreParseSuccess is returned.
195 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 199 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
196 CHECK(preparser.logger()->has_error()); 200 CHECK(pending_error_handler.has_pending_error());
197 } 201 }
198 } 202 }
199 203
200 204
201 class ScriptResource : public v8::String::ExternalOneByteStringResource { 205 class ScriptResource : public v8::String::ExternalOneByteStringResource {
202 public: 206 public:
203 ScriptResource(const char* data, size_t length) 207 ScriptResource(const char* data, size_t length)
204 : data_(data), length_(length) { } 208 : data_(data), length_(length) { }
205 209
206 const char* data() const { return data_; } 210 const char* data() const { return data_; }
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 357
354 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); 358 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit();
355 for (int i = 0; programs[i]; i++) { 359 for (int i = 0; programs[i]; i++) {
356 auto stream = i::ScannerStream::ForTesting(programs[i]); 360 auto stream = i::ScannerStream::ForTesting(programs[i]);
357 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 361 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
358 scanner.Initialize(stream.get()); 362 scanner.Initialize(stream.get());
359 363
360 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 364 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
361 i::AstValueFactory ast_value_factory( 365 i::AstValueFactory ast_value_factory(
362 &zone, CcTest::i_isolate()->heap()->HashSeed()); 366 &zone, CcTest::i_isolate()->heap()->HashSeed());
363 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 367 i::PendingCompilationErrorHandler pending_error_handler;
368 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
369 &pending_error_handler, stack_limit);
364 preparser.set_allow_lazy(true); 370 preparser.set_allow_lazy(true);
365 preparser.set_allow_natives(true); 371 preparser.set_allow_natives(true);
366 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 372 i::PreParser::PreParseResult result = preparser.PreParseProgram();
367 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 373 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
368 CHECK(!preparser.logger()->has_error()); 374 CHECK(!pending_error_handler.has_pending_error());
369 } 375 }
370 } 376 }
371 377
372 378
373 TEST(StandAlonePreParserNoNatives) { 379 TEST(StandAlonePreParserNoNatives) {
374 v8::V8::Initialize(); 380 v8::V8::Initialize();
375 381
376 CcTest::i_isolate()->stack_guard()->SetStackLimit( 382 CcTest::i_isolate()->stack_guard()->SetStackLimit(
377 i::GetCurrentStackPosition() - 128 * 1024); 383 i::GetCurrentStackPosition() - 128 * 1024);
378 384
379 const char* programs[] = { 385 const char* programs[] = {
380 "%ArgleBargle(glop);", 386 "%ArgleBargle(glop);",
381 "var x = %_IsSmi(42);", 387 "var x = %_IsSmi(42);",
382 NULL 388 NULL
383 }; 389 };
384 390
385 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); 391 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit();
386 for (int i = 0; programs[i]; i++) { 392 for (int i = 0; programs[i]; i++) {
387 auto stream = i::ScannerStream::ForTesting(programs[i]); 393 auto stream = i::ScannerStream::ForTesting(programs[i]);
388 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 394 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
389 scanner.Initialize(stream.get()); 395 scanner.Initialize(stream.get());
390 396
391 // Preparser defaults to disallowing natives syntax. 397 // Preparser defaults to disallowing natives syntax.
392 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 398 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
393 i::AstValueFactory ast_value_factory( 399 i::AstValueFactory ast_value_factory(
394 &zone, CcTest::i_isolate()->heap()->HashSeed()); 400 &zone, CcTest::i_isolate()->heap()->HashSeed());
395 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 401 i::PendingCompilationErrorHandler pending_error_handler;
402 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
403 &pending_error_handler, stack_limit);
396 preparser.set_allow_lazy(true); 404 preparser.set_allow_lazy(true);
397 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 405 i::PreParser::PreParseResult result = preparser.PreParseProgram();
398 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 406 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
399 CHECK(preparser.logger()->has_error()); 407 CHECK(pending_error_handler.has_pending_error());
400 } 408 }
401 } 409 }
402 410
403 411
404 TEST(PreparsingObjectLiterals) { 412 TEST(PreparsingObjectLiterals) {
405 // Regression test for a bug where the symbol stream produced by PreParser 413 // Regression test for a bug where the symbol stream produced by PreParser
406 // didn't match what Parser wanted to consume. 414 // didn't match what Parser wanted to consume.
407 v8::Isolate* isolate = CcTest::isolate(); 415 v8::Isolate* isolate = CcTest::isolate();
408 v8::HandleScope handles(isolate); 416 v8::HandleScope handles(isolate);
409 v8::Local<v8::Context> context = v8::Context::New(isolate); 417 v8::Local<v8::Context> context = v8::Context::New(isolate);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 // Before fix, didn't check *ok after Expect(Token::Identifier, ok), 458 // Before fix, didn't check *ok after Expect(Token::Identifier, ok),
451 // and then used the invalid currently scanned literal. This always 459 // and then used the invalid currently scanned literal. This always
452 // failed in debug mode, and sometimes crashed in release mode. 460 // failed in debug mode, and sometimes crashed in release mode.
453 461
454 auto stream = i::ScannerStream::ForTesting(program); 462 auto stream = i::ScannerStream::ForTesting(program);
455 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 463 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
456 scanner.Initialize(stream.get()); 464 scanner.Initialize(stream.get());
457 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 465 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
458 i::AstValueFactory ast_value_factory(&zone, 466 i::AstValueFactory ast_value_factory(&zone,
459 CcTest::i_isolate()->heap()->HashSeed()); 467 CcTest::i_isolate()->heap()->HashSeed());
468 i::PendingCompilationErrorHandler pending_error_handler;
460 i::PreParser preparser(&zone, &scanner, &ast_value_factory, 469 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
470 &pending_error_handler,
461 CcTest::i_isolate()->stack_guard()->real_climit()); 471 CcTest::i_isolate()->stack_guard()->real_climit());
462 preparser.set_allow_lazy(true); 472 preparser.set_allow_lazy(true);
463 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 473 i::PreParser::PreParseResult result = preparser.PreParseProgram();
464 // Even in the case of a syntax error, kPreParseSuccess is returned. 474 // Even in the case of a syntax error, kPreParseSuccess is returned.
465 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 475 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
466 CHECK(preparser.logger()->has_error()); 476 CHECK(pending_error_handler.has_pending_error());
467 } 477 }
468 478
469 479
470 TEST(Regress928) { 480 TEST(Regress928) {
471 // Test only applies when lazy parsing. 481 // Test only applies when lazy parsing.
472 if (!i::FLAG_lazy) return; 482 if (!i::FLAG_lazy) return;
473 i::FLAG_min_preparse_length = 0; 483 i::FLAG_min_preparse_length = 0;
474 484
475 // Tests that the first non-toplevel function is not included in the preparse 485 // Tests that the first non-toplevel function is not included in the preparse
476 // data. 486 // data.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 533
524 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit(); 534 uintptr_t stack_limit = CcTest::i_isolate()->stack_guard()->real_climit();
525 535
526 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize); 536 auto stream = i::ScannerStream::ForTesting(program.get(), kProgramSize);
527 i::Scanner scanner(CcTest::i_isolate()->unicode_cache()); 537 i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
528 scanner.Initialize(stream.get()); 538 scanner.Initialize(stream.get());
529 539
530 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 540 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
531 i::AstValueFactory ast_value_factory(&zone, 541 i::AstValueFactory ast_value_factory(&zone,
532 CcTest::i_isolate()->heap()->HashSeed()); 542 CcTest::i_isolate()->heap()->HashSeed());
533 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 543 i::PendingCompilationErrorHandler pending_error_handler;
544 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
545 &pending_error_handler, stack_limit);
534 preparser.set_allow_lazy(true); 546 preparser.set_allow_lazy(true);
535 i::PreParser::PreParseResult result = preparser.PreParseProgram(); 547 i::PreParser::PreParseResult result = preparser.PreParseProgram();
536 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result); 548 CHECK_EQ(i::PreParser::kPreParseStackOverflow, result);
537 } 549 }
538 550
539 551
540 void TestStreamScanner(i::Utf16CharacterStream* stream, 552 void TestStreamScanner(i::Utf16CharacterStream* stream,
541 i::Token::Value* expected_tokens, 553 i::Token::Value* expected_tokens,
542 int skip_pos = 0, // Zero means not skipping. 554 int skip_pos = 0, // Zero means not skipping.
543 int skip_to = 0) { 555 int skip_to = 0) {
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 int length = start[0]; 1275 int length = start[0];
1264 char* result = i::NewArray<char>(length + 1); 1276 char* result = i::NewArray<char>(length + 1);
1265 for (int i = 0; i < length; i++) { 1277 for (int i = 0; i < length; i++) {
1266 result[i] = start[i + 1]; 1278 result[i] = start[i + 1];
1267 } 1279 }
1268 result[length] = '\0'; 1280 result[length] = '\0';
1269 return result; 1281 return result;
1270 } 1282 }
1271 1283
1272 1284
1273 i::Handle<i::String> FormatMessage(i::Vector<unsigned> data) {
1274 i::Isolate* isolate = CcTest::i_isolate();
1275 int message = data[i::PreparseDataConstants::kMessageTemplatePos];
1276 int arg_count = data[i::PreparseDataConstants::kMessageArgCountPos];
1277 i::Handle<i::Object> arg_object;
1278 if (arg_count == 1) {
1279 // Position after text found by skipping past length field and
1280 // length field content words.
1281 const char* arg =
1282 ReadString(&data[i::PreparseDataConstants::kMessageArgPos]);
1283 arg_object = v8::Utils::OpenHandle(*v8_str(arg));
1284 i::DeleteArray(arg);
1285 } else {
1286 CHECK_EQ(0, arg_count);
1287 arg_object = isolate->factory()->undefined_value();
1288 }
1289
1290 data.Dispose();
1291 return i::MessageTemplate::FormatMessage(isolate, message, arg_object);
1292 }
1293
1294 enum ParserFlag { 1285 enum ParserFlag {
1295 kAllowLazy, 1286 kAllowLazy,
1296 kAllowNatives, 1287 kAllowNatives,
1297 kAllowHarmonyFunctionSent, 1288 kAllowHarmonyFunctionSent,
1298 kAllowHarmonyAsyncAwait, 1289 kAllowHarmonyAsyncAwait,
1299 kAllowHarmonyRestrictiveGenerators, 1290 kAllowHarmonyRestrictiveGenerators,
1300 kAllowHarmonyTrailingCommas, 1291 kAllowHarmonyTrailingCommas,
1301 kAllowHarmonyClassFields, 1292 kAllowHarmonyClassFields,
1302 }; 1293 };
1303 1294
(...skipping 27 matching lines...) Expand all
1331 bool is_module = false, 1322 bool is_module = false,
1332 bool test_preparser = true) { 1323 bool test_preparser = true) {
1333 i::Isolate* isolate = CcTest::i_isolate(); 1324 i::Isolate* isolate = CcTest::i_isolate();
1334 i::Factory* factory = isolate->factory(); 1325 i::Factory* factory = isolate->factory();
1335 1326
1336 uintptr_t stack_limit = isolate->stack_guard()->real_climit(); 1327 uintptr_t stack_limit = isolate->stack_guard()->real_climit();
1337 int preparser_materialized_literals = -1; 1328 int preparser_materialized_literals = -1;
1338 int parser_materialized_literals = -2; 1329 int parser_materialized_literals = -2;
1339 1330
1340 // Preparse the data. 1331 // Preparse the data.
1341 i::ParserLogger log; 1332 i::PendingCompilationErrorHandler pending_error_handler;
1342 if (test_preparser) { 1333 if (test_preparser) {
1343 i::Scanner scanner(isolate->unicode_cache()); 1334 i::Scanner scanner(isolate->unicode_cache());
1344 std::unique_ptr<i::Utf16CharacterStream> stream( 1335 std::unique_ptr<i::Utf16CharacterStream> stream(
1345 i::ScannerStream::For(source)); 1336 i::ScannerStream::For(source));
1346 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 1337 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1347 i::AstValueFactory ast_value_factory( 1338 i::AstValueFactory ast_value_factory(
1348 &zone, CcTest::i_isolate()->heap()->HashSeed()); 1339 &zone, CcTest::i_isolate()->heap()->HashSeed());
1349 i::PreParser preparser(&zone, &scanner, &ast_value_factory, stack_limit); 1340 i::PreParser preparser(&zone, &scanner, &ast_value_factory,
1341 &pending_error_handler, stack_limit);
1350 SetParserFlags(&preparser, flags); 1342 SetParserFlags(&preparser, flags);
1351 scanner.Initialize(stream.get()); 1343 scanner.Initialize(stream.get());
1352 i::PreParser::PreParseResult result = 1344 i::PreParser::PreParseResult result =
1353 preparser.PreParseProgram(&preparser_materialized_literals, is_module); 1345 preparser.PreParseProgram(&preparser_materialized_literals, is_module);
1354 CHECK_EQ(i::PreParser::kPreParseSuccess, result); 1346 CHECK_EQ(i::PreParser::kPreParseSuccess, result);
1355 i::PreParserLogger* logger = preparser.logger();
1356 // Convert to complete log.
1357 if (logger->has_error()) {
1358 log.LogMessage(logger->start(), logger->end(), logger->message(),
1359 logger->argument_opt(), logger->error_type());
1360 }
1361 } 1347 }
1362 bool preparse_error = log.HasError();
1363 1348
1364 // Parse the data 1349 // Parse the data
1365 i::FunctionLiteral* function; 1350 i::FunctionLiteral* function;
1366 { 1351 {
1367 i::Handle<i::Script> script = factory->NewScript(source); 1352 i::Handle<i::Script> script = factory->NewScript(source);
1368 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME); 1353 i::Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1369 i::ParseInfo info(&zone, script); 1354 i::ParseInfo info(&zone, script);
1370 i::Parser parser(&info); 1355 i::Parser parser(&info);
1371 SetParserFlags(&parser, flags); 1356 SetParserFlags(&parser, flags);
1372 if (is_module) info.set_module(); 1357 if (is_module) info.set_module();
(...skipping 19 matching lines...) Expand all
1392 v8::base::OS::Print( 1377 v8::base::OS::Print(
1393 "Parser failed on:\n" 1378 "Parser failed on:\n"
1394 "\t%s\n" 1379 "\t%s\n"
1395 "with error:\n" 1380 "with error:\n"
1396 "\t%s\n" 1381 "\t%s\n"
1397 "However, we expected no error.", 1382 "However, we expected no error.",
1398 source->ToCString().get(), message_string->ToCString().get()); 1383 source->ToCString().get(), message_string->ToCString().get());
1399 CHECK(false); 1384 CHECK(false);
1400 } 1385 }
1401 1386
1402 if (test_preparser && !preparse_error) { 1387 if (test_preparser && !pending_error_handler.has_pending_error()) {
1403 v8::base::OS::Print( 1388 v8::base::OS::Print(
1404 "Parser failed on:\n" 1389 "Parser failed on:\n"
1405 "\t%s\n" 1390 "\t%s\n"
1406 "with error:\n" 1391 "with error:\n"
1407 "\t%s\n" 1392 "\t%s\n"
1408 "However, the preparser succeeded", 1393 "However, the preparser succeeded",
1409 source->ToCString().get(), message_string->ToCString().get()); 1394 source->ToCString().get(), message_string->ToCString().get());
1410 CHECK(false); 1395 CHECK(false);
1411 } 1396 }
1412 // Check that preparser and parser produce the same error. 1397 // Check that preparser and parser produce the same error.
1413 if (test_preparser) { 1398 if (test_preparser) {
1414 i::Handle<i::String> preparser_message = 1399 i::Handle<i::String> preparser_message =
1415 FormatMessage(log.ErrorMessageData()); 1400 pending_error_handler.FormatMessage(CcTest::i_isolate());
1416 if (!i::String::Equals(message_string, preparser_message)) { 1401 if (!i::String::Equals(message_string, preparser_message)) {
1417 v8::base::OS::Print( 1402 v8::base::OS::Print(
1418 "Expected parser and preparser to produce the same error on:\n" 1403 "Expected parser and preparser to produce the same error on:\n"
1419 "\t%s\n" 1404 "\t%s\n"
1420 "However, found the following error messages\n" 1405 "However, found the following error messages\n"
1421 "\tparser: %s\n" 1406 "\tparser: %s\n"
1422 "\tpreparser: %s\n", 1407 "\tpreparser: %s\n",
1423 source->ToCString().get(), message_string->ToCString().get(), 1408 source->ToCString().get(), message_string->ToCString().get(),
1424 preparser_message->ToCString().get()); 1409 preparser_message->ToCString().get());
1425 CHECK(false); 1410 CHECK(false);
1426 } 1411 }
1427 } 1412 }
1428 } else if (test_preparser && preparse_error) { 1413 } else if (test_preparser && pending_error_handler.has_pending_error()) {
1429 v8::base::OS::Print( 1414 v8::base::OS::Print(
1430 "Preparser failed on:\n" 1415 "Preparser failed on:\n"
1431 "\t%s\n" 1416 "\t%s\n"
1432 "with error:\n" 1417 "with error:\n"
1433 "\t%s\n" 1418 "\t%s\n"
1434 "However, the parser succeeded", 1419 "However, the parser succeeded",
1435 source->ToCString().get(), 1420 source->ToCString().get(),
1436 FormatMessage(log.ErrorMessageData())->ToCString().get()); 1421 pending_error_handler.FormatMessage(CcTest::i_isolate())
1422 ->ToCString()
1423 .get());
1437 CHECK(false); 1424 CHECK(false);
1438 } else if (result == kError) { 1425 } else if (result == kError) {
1439 v8::base::OS::Print( 1426 v8::base::OS::Print(
1440 "Expected error on:\n" 1427 "Expected error on:\n"
1441 "\t%s\n" 1428 "\t%s\n"
1442 "However, parser and preparser succeeded", 1429 "However, parser and preparser succeeded",
1443 source->ToCString().get()); 1430 source->ToCString().get());
1444 CHECK(false); 1431 CHECK(false);
1445 } else if (test_preparser && 1432 } else if (test_preparser &&
1446 preparser_materialized_literals != parser_materialized_literals) { 1433 preparser_materialized_literals != parser_materialized_literals) {
(...skipping 6876 matching lines...) Expand 10 before | Expand all | Expand 10 after
8323 const char* data[] = { 8310 const char* data[] = {
8324 "const arguments = 1", 8311 "const arguments = 1",
8325 "let arguments", 8312 "let arguments",
8326 "var arguments", 8313 "var arguments",
8327 NULL 8314 NULL
8328 }; 8315 };
8329 // clang-format on 8316 // clang-format on
8330 RunParserSyncTest(context_data, data, kSuccess); 8317 RunParserSyncTest(context_data, data, kSuccess);
8331 } 8318 }
8332 } 8319 }
OLDNEW
« src/pending-compilation-error-handler.cc ('K') | « src/pending-compilation-error-handler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698