Reviewers: Mads Ager,
Description:
Added ScriptData::HasError.
Please review this at http://codereview.chromium.org/542010
Affected files:
M include/v8.h
M src/parser.h
M src/parser.cc
M test/cctest/test-api.cc
Index: include/v8.h
diff --git a/include/v8.h b/include/v8.h
index
2e30992eddddf7ef471d3679c545d021467d2719..6125286e808f8ea748f19b71a928fd4b36ed58cc
100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -503,6 +503,7 @@ class V8EXPORT ScriptData { // NOLINT
virtual int Length() = 0;
virtual unsigned* Data() = 0;
+ virtual bool HasError() = 0;
};
Index: src/parser.cc
diff --git a/src/parser.cc b/src/parser.cc
index
e4d7392a528b6877f7711fc8fc3dc59a84946b12..1c2818c972c7a223572616c39d7b4ab1eab70b4b
100644
--- a/src/parser.cc
+++ b/src/parser.cc
@@ -4711,6 +4711,11 @@ unsigned* ScriptDataImpl::Data() {
}
+bool ScriptDataImpl::HasError() {
+ return has_error();
+}
+
+
ScriptDataImpl* PreParse(Handle<String> source,
unibrow::CharacterStream* stream,
v8::Extension* extension) {
Index: src/parser.h
diff --git a/src/parser.h b/src/parser.h
index
7328e811948f5a099e017e64d39dd59914d3ea48..a67284c281e89aef0e9186fff59c912347897586
100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -91,6 +91,7 @@ class ScriptDataImpl : public ScriptData {
virtual ~ScriptDataImpl();
virtual int Length();
virtual unsigned* Data();
+ virtual bool HasError();
FunctionEntry GetFunctionEnd(int start);
bool SanityCheck();
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index
3e3c9578e3b23cf2641e126a76ae325d5d455bcc..3db7c37f1cd60bcaf4d5a31894dbdae9d2ba0809
100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -6742,6 +6742,27 @@ TEST(PreCompile) {
v8::ScriptData::PreCompile(script, i::StrLength(script));
CHECK_NE(sd->Length(), 0);
CHECK_NE(sd->Data(), NULL);
+ CHECK(!sd->HasError());
+ delete sd;
+}
+
+
+TEST(PreCompileWithError) {
+ v8::V8::Initialize();
+ const char *script = "function foo(a) { return 1 * * 2; }";
+ v8::ScriptData *sd =
+ v8::ScriptData::PreCompile(script, i::StrLength(script));
+ CHECK(sd->HasError());
+ delete sd;
+}
+
+
+TEST(Regress31661) {
+ v8::V8::Initialize();
+ const char *script = " The Definintive Guide";
+ v8::ScriptData *sd =
+ v8::ScriptData::PreCompile(script, i::StrLength(script));
+ CHECK(sd->HasError());
delete sd;
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev