diff options
Diffstat (limited to 'third_party/rust/jsparagus-ast/src/source_location.rs')
-rw-r--r-- | third_party/rust/jsparagus-ast/src/source_location.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/third_party/rust/jsparagus-ast/src/source_location.rs b/third_party/rust/jsparagus-ast/src/source_location.rs new file mode 100644 index 0000000000..2219fa451e --- /dev/null +++ b/third_party/rust/jsparagus-ast/src/source_location.rs @@ -0,0 +1,32 @@ +#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)] +pub struct SourceLocation { + pub start: usize, + pub end: usize, +} + +impl SourceLocation { + pub fn new(start: usize, end: usize) -> Self { + debug_assert!(start <= end); + + Self { start, end } + } + + pub fn from_parts(start: SourceLocation, end: SourceLocation) -> Self { + debug_assert!(start.start <= end.end); + + Self { + start: start.start, + end: end.end, + } + } + + pub fn set_range(&mut self, start: SourceLocation, end: SourceLocation) { + debug_assert!(start.start <= end.end); + self.start = start.start; + self.end = end.end; + } + + pub fn default() -> Self { + Self { start: 0, end: 0 } + } +} |