| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index a043b364992dfd953eb2990f94c2a15e1af2c3ac..99730f577822d1b1de7c3943c99fc68537330387 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -18142,16 +18142,23 @@ TEST(RethrowBogusErrorStackTrace) {
|
| v8::PromiseRejectEvent reject_event = v8::kPromiseRejectWithNoHandler;
|
| int promise_reject_counter = 0;
|
| int promise_revoke_counter = 0;
|
| +int promise_reject_msg_line_number = -1;
|
| +int promise_reject_msg_column_number = -1;
|
| int promise_reject_line_number = -1;
|
| int promise_reject_frame_count = -1;
|
|
|
| -void PromiseRejectCallback(v8::PromiseRejectMessage message) {
|
| - if (message.GetEvent() == v8::kPromiseRejectWithNoHandler) {
|
| +void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) {
|
| + if (reject_message.GetEvent() == v8::kPromiseRejectWithNoHandler) {
|
| promise_reject_counter++;
|
| - CcTest::global()->Set(v8_str("rejected"), message.GetPromise());
|
| - CcTest::global()->Set(v8_str("value"), message.GetValue());
|
| - v8::Handle<v8::StackTrace> stack_trace =
|
| - v8::Exception::CreateMessage(message.GetValue())->GetStackTrace();
|
| + CcTest::global()->Set(v8_str("rejected"), reject_message.GetPromise());
|
| + CcTest::global()->Set(v8_str("value"), reject_message.GetValue());
|
| + v8::Handle<v8::Message> message =
|
| + v8::Exception::CreateMessage(reject_message.GetValue());
|
| + v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace();
|
| +
|
| + promise_reject_msg_line_number = message->GetLineNumber();
|
| + promise_reject_msg_column_number = message->GetStartColumn() + 1;
|
| +
|
| if (!stack_trace.IsEmpty()) {
|
| promise_reject_frame_count = stack_trace->GetFrameCount();
|
| if (promise_reject_frame_count > 0) {
|
| @@ -18163,8 +18170,8 @@ void PromiseRejectCallback(v8::PromiseRejectMessage message) {
|
| }
|
| } else {
|
| promise_revoke_counter++;
|
| - CcTest::global()->Set(v8_str("revoked"), message.GetPromise());
|
| - CHECK(message.GetValue().IsEmpty());
|
| + CcTest::global()->Set(v8_str("revoked"), reject_message.GetPromise());
|
| + CHECK(reject_message.GetValue().IsEmpty());
|
| }
|
| }
|
|
|
| @@ -18182,6 +18189,8 @@ v8::Handle<v8::Value> RejectValue() {
|
| void ResetPromiseStates() {
|
| promise_reject_counter = 0;
|
| promise_revoke_counter = 0;
|
| + promise_reject_msg_line_number = -1;
|
| + promise_reject_msg_column_number = -1;
|
| promise_reject_line_number = -1;
|
| promise_reject_frame_count = -1;
|
| CcTest::global()->Set(v8_str("rejected"), v8_str(""));
|
| @@ -18411,6 +18420,8 @@ TEST(PromiseRejectCallback) {
|
| CHECK_EQ(0, promise_revoke_counter);
|
| CHECK_EQ(2, promise_reject_frame_count);
|
| CHECK_EQ(3, promise_reject_line_number);
|
| + CHECK_EQ(3, promise_reject_msg_line_number);
|
| + CHECK_EQ(5, promise_reject_msg_column_number);
|
|
|
| ResetPromiseStates();
|
|
|
| @@ -18431,6 +18442,8 @@ TEST(PromiseRejectCallback) {
|
| CHECK_EQ(0, promise_revoke_counter);
|
| CHECK_EQ(2, promise_reject_frame_count);
|
| CHECK_EQ(5, promise_reject_line_number);
|
| + CHECK_EQ(5, promise_reject_msg_line_number);
|
| + CHECK_EQ(23, promise_reject_msg_column_number);
|
|
|
| // Throw in u3, which handles u1's rejection.
|
| CompileRunWithOrigin(
|
| @@ -18454,6 +18467,8 @@ TEST(PromiseRejectCallback) {
|
| CHECK_EQ(2, promise_revoke_counter);
|
| CHECK_EQ(3, promise_reject_frame_count);
|
| CHECK_EQ(3, promise_reject_line_number);
|
| + CHECK_EQ(3, promise_reject_msg_line_number);
|
| + CHECK_EQ(12, promise_reject_msg_column_number);
|
|
|
| ResetPromiseStates();
|
|
|
| @@ -18473,6 +18488,26 @@ TEST(PromiseRejectCallback) {
|
| CHECK_EQ(1, promise_revoke_counter);
|
| CHECK_EQ(0, promise_reject_frame_count);
|
| CHECK_EQ(-1, promise_reject_line_number);
|
| +
|
| + ResetPromiseStates();
|
| +
|
| + // Create promise t1, which rejects by throwing syntax error from eval.
|
| + CompileRunWithOrigin(
|
| + "var t1 = new Promise( \n"
|
| + " function(res, rej) { \n"
|
| + " var content = '\\n\\\n"
|
| + " }'; \n"
|
| + " eval(content); \n"
|
| + " } \n"
|
| + "); \n",
|
| + "pro", 0, 0);
|
| + CHECK(!GetPromise("t1")->HasHandler());
|
| + CHECK_EQ(1, promise_reject_counter);
|
| + CHECK_EQ(0, promise_revoke_counter);
|
| + CHECK_EQ(2, promise_reject_frame_count);
|
| + CHECK_EQ(5, promise_reject_line_number);
|
| + CHECK_EQ(2, promise_reject_msg_line_number);
|
| + CHECK_EQ(7, promise_reject_msg_column_number);
|
| }
|
|
|
|
|
|
|