From 41e1d6a6a56b4ed74fd62f3a168d1a9fd1d481e3 Mon Sep 17 00:00:00 2001 From: "christian.plesner.hansen@gmail.com" Date: Mon, 11 Jan 2010 12:13:24 +0000 Subject: [PATCH] Added ScriptData::HasError. Review URL: http://codereview.chromium.org/542010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- include/v8.h | 1 + src/parser.cc | 5 +++++ src/parser.h | 1 + test/cctest/test-api.cc | 21 +++++++++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/include/v8.h b/include/v8.h index 2e30992..6125286 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; }; diff --git a/src/parser.cc b/src/parser.cc index e4d7392..1c2818c 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 source, unibrow::CharacterStream* stream, v8::Extension* extension) { diff --git a/src/parser.h b/src/parser.h index 7328e81..a67284c 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(); diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index 3e3c957..3db7c37 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; } -- 2.7.4