Index: test/cctest/compiler/test-run-jsexceptions.cc |
diff --git a/test/cctest/compiler/test-run-jsexceptions.cc b/test/cctest/compiler/test-run-jsexceptions.cc |
index 5cafc34fdcffe12a17adeef6830e2b6a2452bd02..9b31fe09be15837c4b6df313437eb0a4f5b9f45f 100644 |
--- a/test/cctest/compiler/test-run-jsexceptions.cc |
+++ b/test/cctest/compiler/test-run-jsexceptions.cc |
@@ -18,7 +18,7 @@ TEST(Throw) { |
} |
-TEST(ThrowSourcePosition) { |
+TEST(ThrowMessagePosition) { |
i::FLAG_turbo_exceptions = true; |
static const char* src = |
"(function(a, b) { \n" |
@@ -47,6 +47,48 @@ TEST(ThrowSourcePosition) { |
} |
+TEST(ThrowMessageDirectly) { |
+ i::FLAG_turbo_exceptions = true; |
+ static const char* src = |
+ "(function(a, b) {" |
+ " if (a) { throw b; } else { throw new Error(b); }" |
+ "})"; |
+ FunctionTester T(src); |
+ v8::Handle<v8::Message> message; |
+ |
+ message = T.CheckThrowsReturnMessage(T.false_value(), T.Val("Wat?")); |
+ CHECK(!message.IsEmpty()); |
+ CHECK(message->Get()->Equals(v8_str("Uncaught Error: Wat?"))); |
+ |
+ message = T.CheckThrowsReturnMessage(T.true_value(), T.Val("Kaboom!")); |
+ CHECK(!message.IsEmpty()); |
+ CHECK(message->Get()->Equals(v8_str("Uncaught Kaboom!"))); |
+} |
+ |
+ |
+TEST(ThrowMessageIndirectly) { |
+ i::FLAG_turbo_exceptions = true; |
+ static const char* src = |
+ "(function(a, b) {" |
+ " try {" |
+ " if (a) { throw b; } else { throw new Error(b); }" |
+ " } finally {" |
+ " try { throw 'clobber'; } catch (e) { 'unclobber'; }" |
+ " }" |
+ "})"; |
+ FunctionTester T(src); |
+ v8::Handle<v8::Message> message; |
+ |
+ message = T.CheckThrowsReturnMessage(T.false_value(), T.Val("Wat?")); |
+ CHECK(!message.IsEmpty()); |
+ CHECK(message->Get()->Equals(v8_str("Uncaught Error: Wat?"))); |
+ |
+ message = T.CheckThrowsReturnMessage(T.true_value(), T.Val("Kaboom!")); |
+ CHECK(!message.IsEmpty()); |
+ CHECK(message->Get()->Equals(v8_str("Uncaught Kaboom!"))); |
+} |
+ |
+ |
// TODO(mstarzinger): Increase test coverage by having similar tests within the |
// mjsunit suite to also test integration with other components (e.g. OSR). |