summaryrefslogtreecommitdiff
path: root/src/syntax/span.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax/span.rs')
-rw-r--r--src/syntax/span.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/syntax/span.rs b/src/syntax/span.rs
index 4d5b8819..a707d3d9 100644
--- a/src/syntax/span.rs
+++ b/src/syntax/span.rs
@@ -125,6 +125,17 @@ impl Span {
*self = self.join(other)
}
+ /// Create a new span with n characters inserted inside of this span.
+ pub fn inserted(mut self, other: Self, n: usize) -> Self {
+ if !self.contains(other.start) || !self.contains(other.end) {
+ panic!();
+ }
+
+ let len_change = (n as isize - other.len() as isize) as usize;
+ self.end += len_change;
+ self
+ }
+
/// Test whether a position is within the span.
pub fn contains(&self, pos: usize) -> bool {
self.start <= pos && self.end >= pos