|
@@ -17,12 +17,15 @@ namespace JS {
|
|
|
|
|
|
SourceRange const& TracebackFrame::source_range() const
|
|
SourceRange const& TracebackFrame::source_range() const
|
|
{
|
|
{
|
|
- if (auto* unrealized = source_range_storage.get_pointer<UnrealizedSourceRange>(); unrealized && unrealized->source_code) {
|
|
|
|
- auto source_range = unrealized->source_code->range_from_offsets(unrealized->start_offset, unrealized->end_offset);
|
|
|
|
|
|
+ if (auto* unrealized = source_range_storage.get_pointer<UnrealizedSourceRange>()) {
|
|
|
|
+ auto source_range = [&] {
|
|
|
|
+ if (!unrealized->source_code) {
|
|
|
|
+ static auto dummy_source_code = SourceCode::create(String {}, String {});
|
|
|
|
+ return SourceRange { dummy_source_code, {}, {} };
|
|
|
|
+ }
|
|
|
|
+ return unrealized->source_code->range_from_offsets(unrealized->start_offset, unrealized->end_offset);
|
|
|
|
+ }();
|
|
source_range_storage = move(source_range);
|
|
source_range_storage = move(source_range);
|
|
- } else {
|
|
|
|
- static auto dummy_source_range = SourceRange { .code = SourceCode::create(String {}, String {}), .start = {}, .end = {} };
|
|
|
|
- return dummy_source_range;
|
|
|
|
}
|
|
}
|
|
return source_range_storage.get<SourceRange>();
|
|
return source_range_storage.get<SourceRange>();
|
|
}
|
|
}
|