| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index c881f868a0472e146f611469d9b0ff30f34f7aa1..48b77725a655c69435aef41bb4740c796ca693d4 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -70,7 +70,7 @@ TEST(ScanKeywords) {
|
| CHECK(static_cast<int>(sizeof(buffer)) >= length);
|
| {
|
| i::Utf8ToUtf16CharacterStream stream(keyword, length);
|
| - i::Scanner scanner(&unicode_cache);
|
| + i::Scanner scanner(&unicode_cache, false);
|
| scanner.Initialize(&stream);
|
| CHECK_EQ(key_token.token, scanner.Next());
|
| CHECK_EQ(i::Token::EOS, scanner.Next());
|
| @@ -78,7 +78,7 @@ TEST(ScanKeywords) {
|
| // Removing characters will make keyword matching fail.
|
| {
|
| i::Utf8ToUtf16CharacterStream stream(keyword, length - 1);
|
| - i::Scanner scanner(&unicode_cache);
|
| + i::Scanner scanner(&unicode_cache, false);
|
| scanner.Initialize(&stream);
|
| CHECK_EQ(i::Token::IDENTIFIER, scanner.Next());
|
| CHECK_EQ(i::Token::EOS, scanner.Next());
|
| @@ -89,7 +89,7 @@ TEST(ScanKeywords) {
|
| i::MemMove(buffer, keyword, length);
|
| buffer[length] = chars_to_append[j];
|
| i::Utf8ToUtf16CharacterStream stream(buffer, length + 1);
|
| - i::Scanner scanner(&unicode_cache);
|
| + i::Scanner scanner(&unicode_cache, false);
|
| scanner.Initialize(&stream);
|
| CHECK_EQ(i::Token::IDENTIFIER, scanner.Next());
|
| CHECK_EQ(i::Token::EOS, scanner.Next());
|
| @@ -99,7 +99,7 @@ TEST(ScanKeywords) {
|
| i::MemMove(buffer, keyword, length);
|
| buffer[length - 1] = '_';
|
| i::Utf8ToUtf16CharacterStream stream(buffer, length);
|
| - i::Scanner scanner(&unicode_cache);
|
| + i::Scanner scanner(&unicode_cache, false);
|
| scanner.Initialize(&stream);
|
| CHECK_EQ(i::Token::IDENTIFIER, scanner.Next());
|
| CHECK_EQ(i::Token::EOS, scanner.Next());
|
| @@ -151,7 +151,7 @@ TEST(ScanHTMLEndComments) {
|
| reinterpret_cast<const i::byte*>(tests[i]);
|
| i::Utf8ToUtf16CharacterStream stream(source, i::StrLength(tests[i]));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
| i::Zone zone;
|
| i::AstValueFactory ast_value_factory(
|
| @@ -169,7 +169,7 @@ TEST(ScanHTMLEndComments) {
|
| reinterpret_cast<const i::byte*>(fail_tests[i]);
|
| i::Utf8ToUtf16CharacterStream stream(source, i::StrLength(fail_tests[i]));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
| i::Zone zone;
|
| i::AstValueFactory ast_value_factory(
|
| @@ -184,6 +184,32 @@ TEST(ScanHTMLEndComments) {
|
| }
|
| }
|
|
|
| +TEST(ScanHtmlComments) {
|
| + const char* src = "a <!-- b --> c";
|
| + i::UnicodeCache unicode_cache;
|
| +
|
| + // Skip HTML comments:
|
| + {
|
| + i::Utf8ToUtf16CharacterStream stream(reinterpret_cast<const i::byte*>(src),
|
| + sizeof(src));
|
| + i::Scanner scanner(&unicode_cache, true);
|
| + scanner.Initialize(&stream);
|
| + CHECK_EQ(i::Token::IDENTIFIER, scanner.Next());
|
| + CHECK_EQ(i::Token::EOS, scanner.Next());
|
| + }
|
| +
|
| + // Parse (don't skip) HTML comments:
|
| + {
|
| + i::Utf8ToUtf16CharacterStream stream(reinterpret_cast<const i::byte*>(src),
|
| + sizeof(src));
|
| + i::Scanner scanner(&unicode_cache, false);
|
| + scanner.Initialize(&stream);
|
| + CHECK_EQ(i::Token::IDENTIFIER, scanner.Next());
|
| + CHECK_EQ(i::Token::LT, scanner.Next());
|
| + CHECK_EQ(i::Token::NOT, scanner.Next());
|
| + CHECK_EQ(i::Token::DEC, scanner.Next());
|
| + }
|
| +}
|
|
|
| class ScriptResource : public v8::String::ExternalOneByteStringResource {
|
| public:
|
| @@ -323,7 +349,7 @@ TEST(StandAlonePreParser) {
|
| reinterpret_cast<const i::byte*>(program),
|
| static_cast<unsigned>(strlen(program)));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
|
|
| i::Zone zone;
|
| @@ -359,7 +385,7 @@ TEST(StandAlonePreParserNoNatives) {
|
| reinterpret_cast<const i::byte*>(program),
|
| static_cast<unsigned>(strlen(program)));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
|
|
| // Preparser defaults to disallowing natives syntax.
|
| @@ -430,7 +456,7 @@ TEST(RegressChromium62639) {
|
| reinterpret_cast<const i::byte*>(program),
|
| static_cast<unsigned>(strlen(program)));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
| i::Zone zone;
|
| i::AstValueFactory ast_value_factory(&zone,
|
| @@ -465,7 +491,7 @@ TEST(Regress928) {
|
| i::Handle<i::String> source = factory->NewStringFromAsciiChecked(program);
|
| i::GenericStringUtf16CharacterStream stream(source, 0, source->length());
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
| i::Zone zone;
|
| i::AstValueFactory ast_value_factory(&zone,
|
| @@ -517,7 +543,7 @@ TEST(PreParseOverflow) {
|
| reinterpret_cast<const i::byte*>(program.get()),
|
| static_cast<unsigned>(kProgramSize));
|
| i::CompleteParserRecorder log;
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
|
|
| i::Zone zone;
|
| @@ -747,7 +773,7 @@ void TestStreamScanner(i::Utf16CharacterStream* stream,
|
| i::Token::Value* expected_tokens,
|
| int skip_pos = 0, // Zero means not skipping.
|
| int skip_to = 0) {
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(stream);
|
|
|
| int i = 0;
|
| @@ -830,7 +856,7 @@ void TestScanRegExp(const char* re_source, const char* expected) {
|
| reinterpret_cast<const i::byte*>(re_source),
|
| static_cast<unsigned>(strlen(re_source)));
|
| i::HandleScope scope(CcTest::i_isolate());
|
| - i::Scanner scanner(CcTest::i_isolate()->unicode_cache());
|
| + i::Scanner scanner(CcTest::i_isolate()->unicode_cache(), false);
|
| scanner.Initialize(&stream);
|
|
|
| i::Token::Value start = scanner.peek();
|
| @@ -1547,7 +1573,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source,
|
| // Preparse the data.
|
| i::CompleteParserRecorder log;
|
| if (test_preparser) {
|
| - i::Scanner scanner(isolate->unicode_cache());
|
| + i::Scanner scanner(isolate->unicode_cache(), false);
|
| i::GenericStringUtf16CharacterStream stream(source, 0, source->length());
|
| i::Zone zone;
|
| i::AstValueFactory ast_value_factory(
|
|
|