Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index b12098a85a19e5352471686389ca8387a1789031..c1972e0f267205bf1610f931eddc95a3d6952531 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -108,6 +108,14 @@ TEST(ScanKeywords) { |
} |
+bool ParseDataHasError(i::ScriptData* sd) { |
+ i::ParseData pd(sd); |
+ bool result = pd.HasError(); |
+ delete sd; |
+ return result; |
+} |
+ |
+ |
TEST(ScanHTMLEndComments) { |
v8::V8::Initialize(); |
v8::Isolate* isolate = CcTest::isolate(); |
@@ -157,8 +165,7 @@ TEST(ScanHTMLEndComments) { |
preparser.set_allow_lazy(true); |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
- CHECK(!data.has_error()); |
+ CHECK(!ParseDataHasError(log.GetScriptData())); |
} |
for (int i = 0; fail_tests[i]; i++) { |
@@ -173,8 +180,7 @@ TEST(ScanHTMLEndComments) { |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
// Even in the case of a syntax error, kPreParseSuccess is returned. |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
- CHECK(data.has_error()); |
+ CHECK(ParseDataHasError(log.GetScriptData())); |
} |
} |
@@ -306,8 +312,9 @@ TEST(StandAlonePreParser) { |
preparser.set_allow_natives_syntax(true); |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
- CHECK(!data.has_error()); |
+ i::ScriptData* data = log.GetScriptData(); |
+ CHECK(!i::ParseData(data).HasError()); |
+ delete data; |
} |
} |
@@ -339,9 +346,10 @@ TEST(StandAlonePreParserNoNatives) { |
preparser.set_allow_lazy(true); |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
+ i::ScriptData* data = log.GetScriptData(); |
// Data contains syntax error. |
- CHECK(data.has_error()); |
+ CHECK(i::ParseData(data).HasError()); |
+ delete data; |
} |
} |
@@ -407,8 +415,7 @@ TEST(RegressChromium62639) { |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
// Even in the case of a syntax error, kPreParseSuccess is returned. |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
- CHECK(data.has_error()); |
+ CHECK(ParseDataHasError(log.GetScriptData())); |
} |
@@ -438,15 +445,16 @@ TEST(Regress928) { |
preparser.set_allow_lazy(true); |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
- i::ScriptData data(log.ExtractData()); |
- CHECK(!data.has_error()); |
- data.Initialize(); |
+ i::ScriptData* sd = log.GetScriptData(); |
+ i::ParseData pd(sd); |
+ CHECK(!pd.HasError()); |
+ pd.Initialize(); |
int first_function = |
static_cast<int>(strstr(program, "function") - program); |
int first_lbrace = first_function + i::StrLength("function () "); |
CHECK_EQ('{', program[first_lbrace]); |
- i::FunctionEntry entry1 = data.GetFunctionEntry(first_lbrace); |
+ i::FunctionEntry entry1 = pd.GetFunctionEntry(first_lbrace); |
CHECK(!entry1.is_valid()); |
int second_function = |
@@ -454,9 +462,10 @@ TEST(Regress928) { |
int second_lbrace = |
second_function + i::StrLength("function () "); |
CHECK_EQ('{', program[second_lbrace]); |
- i::FunctionEntry entry2 = data.GetFunctionEntry(second_lbrace); |
+ i::FunctionEntry entry2 = pd.GetFunctionEntry(second_lbrace); |
CHECK(entry2.is_valid()); |
CHECK_EQ('}', program[entry2.end_pos() - 1]); |
+ delete sd; |
} |
@@ -1134,13 +1143,13 @@ TEST(ScopePositions) { |
} |
-i::Handle<i::String> FormatMessage(i::ScriptData* data) { |
+i::Handle<i::String> FormatMessage(i::ParseData* pd) { |
i::Isolate* isolate = CcTest::i_isolate(); |
i::Factory* factory = isolate->factory(); |
- const char* message = data->BuildMessage(); |
+ const char* message = pd->BuildMessage(); |
i::Handle<i::String> format = v8::Utils::OpenHandle( |
*v8::String::NewFromUtf8(CcTest::isolate(), message)); |
- const char* arg = data->BuildArg(); |
+ const char* arg = pd->BuildArg(); |
i::Handle<i::JSArray> args_array = factory->NewJSArray(arg == NULL ? 0 : 1); |
if (arg != NULL) { |
i::JSArray::SetElement( |
@@ -1211,7 +1220,9 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
} |
- i::ScriptData data(log.ExtractData()); |
+ |
+ i::ScriptData* sd = log.GetScriptData(); |
marja
2014/07/09 17:28:51
Btw, in these tests, would it be possible to extra
Yang
2014/07/10 08:28:46
Done. Also got rid of a bunch of methods from Pars
|
+ i::ParseData pd(sd); |
// Parse the data |
i::FunctionLiteral* function; |
@@ -1246,7 +1257,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
CHECK(false); |
} |
- if (!data.has_error()) { |
+ if (!pd.HasError()) { |
marja
2014/07/09 14:42:30
Alright, now I remember why I didn't remove the "S
Yang
2014/07/10 08:28:46
Changed to use the log.
|
v8::base::OS::Print( |
"Parser failed on:\n" |
"\t%s\n" |
@@ -1257,7 +1268,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
CHECK(false); |
} |
// Check that preparser and parser produce the same error. |
- i::Handle<i::String> preparser_message = FormatMessage(&data); |
+ i::Handle<i::String> preparser_message = FormatMessage(&pd); |
if (!i::String::Equals(message_string, preparser_message)) { |
v8::base::OS::Print( |
"Expected parser and preparser to produce the same error on:\n" |
@@ -1270,14 +1281,14 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
preparser_message->ToCString().get()); |
CHECK(false); |
} |
- } else if (data.has_error()) { |
+ } else if (pd.HasError()) { |
v8::base::OS::Print( |
"Preparser failed on:\n" |
"\t%s\n" |
"with error:\n" |
"\t%s\n" |
"However, the parser succeeded", |
- source->ToCString().get(), FormatMessage(&data)->ToCString().get()); |
+ source->ToCString().get(), FormatMessage(&pd)->ToCString().get()); |
CHECK(false); |
} else if (result == kError) { |
v8::base::OS::Print( |
@@ -1287,6 +1298,8 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
source->ToCString().get()); |
CHECK(false); |
} |
+ |
+ delete sd; |
} |
@@ -2165,22 +2178,21 @@ TEST(DontRegressPreParserDataSizes) { |
factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); |
i::Handle<i::Script> script = factory->NewScript(source); |
i::CompilationInfoWithZone info(script); |
- i::ScriptData* data = NULL; |
- info.SetCachedData(&data, i::PRODUCE_CACHED_DATA); |
+ i::ScriptData* sd = NULL; |
+ info.SetCachedData(&sd, i::PRODUCE_CACHED_DATA); |
i::Parser::Parse(&info, true); |
- CHECK(data); |
- CHECK(!data->HasError()); |
+ i::ParseData pd(sd); |
+ CHECK(!pd.HasError()); |
- if (data->function_count() != test_cases[i].functions) { |
+ if (pd.FunctionCount() != test_cases[i].functions) { |
v8::base::OS::Print( |
"Expected preparse data for program:\n" |
"\t%s\n" |
"to contain %d functions, however, received %d functions.\n", |
- program, test_cases[i].functions, |
- data->function_count()); |
+ program, test_cases[i].functions, pd.FunctionCount()); |
CHECK(false); |
} |
- delete data; |
+ delete sd; |
} |
} |