Index: src/d8.cc |
diff --git a/src/d8.cc b/src/d8.cc |
index 8c0f82a3117245f0e6e6a1202db20553d3de111b..cc62aa8cb6acdcadda0a1dbc29ee2109d0b2b97b 100644 |
--- a/src/d8.cc |
+++ b/src/d8.cc |
@@ -925,25 +925,28 @@ void Shell::ReportException(Isolate* isolate, v8::TryCatch* try_catch) { |
// Print (filename):(line number): (message). |
v8::String::Utf8Value filename(message->GetScriptOrigin().ResourceName()); |
const char* filename_string = ToCString(filename); |
- int linenum = |
- message->GetLineNumber(isolate->GetCurrentContext()).FromJust(); |
+ Maybe<int> maybeline = message->GetLineNumber(isolate->GetCurrentContext()); |
+ int linenum = maybeline.IsJust() ? maybeline.FromJust() : -1; |
printf("%s:%i: %s\n", filename_string, linenum, exception_string); |
- // Print line of source code. |
- v8::String::Utf8Value sourceline( |
- message->GetSourceLine(isolate->GetCurrentContext()).ToLocalChecked()); |
- const char* sourceline_string = ToCString(sourceline); |
- printf("%s\n", sourceline_string); |
- // Print wavy underline (GetUnderline is deprecated). |
- int start = |
- message->GetStartColumn(isolate->GetCurrentContext()).FromJust(); |
- for (int i = 0; i < start; i++) { |
- printf(" "); |
- } |
- int end = message->GetEndColumn(isolate->GetCurrentContext()).FromJust(); |
- for (int i = start; i < end; i++) { |
- printf("^"); |
+ if (maybeline.IsJust()) { |
+ // Print line of source code. |
+ v8::String::Utf8Value sourceline( |
+ message->GetSourceLine(isolate->GetCurrentContext()) |
+ .ToLocalChecked()); |
+ const char* sourceline_string = ToCString(sourceline); |
+ printf("%s\n", sourceline_string); |
+ // Print wavy underline (GetUnderline is deprecated). |
+ int start = |
+ message->GetStartColumn(isolate->GetCurrentContext()).FromJust(); |
+ for (int i = 0; i < start; i++) { |
+ printf(" "); |
+ } |
+ int end = message->GetEndColumn(isolate->GetCurrentContext()).FromJust(); |
+ for (int i = start; i < end; i++) { |
+ printf("^"); |
+ } |
+ printf("\n"); |
} |
- printf("\n"); |
Local<Value> stack_trace_string; |
if (try_catch->StackTrace(isolate->GetCurrentContext()) |
.ToLocal(&stack_trace_string) && |