mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 10:22:05 -05:00
50bf303edd
This loosens the connection to the AST interpreter and will allow us to generate SourceRanges for the Bytecode interpreter in the future as well Moves UnrealizedSourceRanges from TracebackFrame to the JS namespace for this
45 lines
979 B
C++
45 lines
979 B
C++
/*
|
|
* Copyright (c) 2020, the SerenityOS developers.
|
|
* Copyright (c) 2023, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/NonnullRefPtr.h>
|
|
#include <AK/StringView.h>
|
|
#include <AK/Types.h>
|
|
#include <LibJS/SourceCode.h>
|
|
|
|
namespace JS {
|
|
|
|
struct Position {
|
|
size_t line { 0 };
|
|
size_t column { 0 };
|
|
size_t offset { 0 };
|
|
};
|
|
|
|
struct SourceRange {
|
|
[[nodiscard]] bool contains(Position const& position) const { return position.offset <= end.offset && position.offset >= start.offset; }
|
|
|
|
NonnullRefPtr<SourceCode const> code;
|
|
Position start;
|
|
Position end;
|
|
|
|
DeprecatedString filename() const;
|
|
};
|
|
|
|
struct UnrealizedSourceRange {
|
|
[[nodiscard]] SourceRange realize() const
|
|
{
|
|
VERIFY(source_code);
|
|
return source_code->range_from_offsets(start_offset, end_offset);
|
|
}
|
|
|
|
RefPtr<SourceCode const> source_code;
|
|
u32 start_offset { 0 };
|
|
u32 end_offset { 0 };
|
|
};
|
|
|
|
}
|