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

Reply via email to