aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/yellow/syntax_text.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-08 18:50:04 +0000
committerAleksey Kladov <[email protected]>2019-01-08 18:50:04 +0000
commitf553837c1ca30a52bf5091689c21d3c3e3362395 (patch)
tree79dbabf6137e6aaf64d494f57a7cecbf397237bc /crates/ra_syntax/src/yellow/syntax_text.rs
parentc9e42fcf245be16958dca6571e4bccc6c29199df (diff)
upstream text-utils to text_unit
Diffstat (limited to 'crates/ra_syntax/src/yellow/syntax_text.rs')
-rw-r--r--crates/ra_syntax/src/yellow/syntax_text.rs14
1 files changed, 5 insertions, 9 deletions
diff --git a/crates/ra_syntax/src/yellow/syntax_text.rs b/crates/ra_syntax/src/yellow/syntax_text.rs
index 31db0fdab..08dbe57a2 100644
--- a/crates/ra_syntax/src/yellow/syntax_text.rs
+++ b/crates/ra_syntax/src/yellow/syntax_text.rs
@@ -1,10 +1,6 @@
1use std::{fmt, ops}; 1use std::{fmt, ops};
2 2
3use ra_text_edit::text_utils::contains_offset_nonstrict; 3use crate::{SyntaxNode, TextRange, TextUnit};
4use crate::{
5 text_utils::intersect,
6 SyntaxNode, TextRange, TextUnit,
7};
8 4
9#[derive(Clone)] 5#[derive(Clone)]
10pub struct SyntaxText<'a> { 6pub struct SyntaxText<'a> {
@@ -23,7 +19,7 @@ impl<'a> SyntaxText<'a> {
23 let range = self.range; 19 let range = self.range;
24 self.node.descendants().filter_map(move |node| { 20 self.node.descendants().filter_map(move |node| {
25 let text = node.leaf_text()?; 21 let text = node.leaf_text()?;
26 let range = intersect(range, node.range())?; 22 let range = range.intersection(&node.range())?;
27 let range = range - node.range().start(); 23 let range = range - node.range().start();
28 Some(&text[range]) 24 Some(&text[range])
29 }) 25 })
@@ -92,13 +88,13 @@ pub trait SyntaxTextSlice: fmt::Debug {
92 88
93impl SyntaxTextSlice for TextRange { 89impl SyntaxTextSlice for TextRange {
94 fn restrict(&self, range: TextRange) -> Option<TextRange> { 90 fn restrict(&self, range: TextRange) -> Option<TextRange> {
95 intersect(*self, range) 91 self.intersection(&range)
96 } 92 }
97} 93}
98 94
99impl SyntaxTextSlice for ops::RangeTo<TextUnit> { 95impl SyntaxTextSlice for ops::RangeTo<TextUnit> {
100 fn restrict(&self, range: TextRange) -> Option<TextRange> { 96 fn restrict(&self, range: TextRange) -> Option<TextRange> {
101 if !contains_offset_nonstrict(range, self.end) { 97 if !range.contains_inclusive(self.end) {
102 return None; 98 return None;
103 } 99 }
104 Some(TextRange::from_to(range.start(), self.end)) 100 Some(TextRange::from_to(range.start(), self.end))
@@ -107,7 +103,7 @@ impl SyntaxTextSlice for ops::RangeTo<TextUnit> {
107 103
108impl SyntaxTextSlice for ops::RangeFrom<TextUnit> { 104impl SyntaxTextSlice for ops::RangeFrom<TextUnit> {
109 fn restrict(&self, range: TextRange) -> Option<TextRange> { 105 fn restrict(&self, range: TextRange) -> Option<TextRange> {
110 if !contains_offset_nonstrict(range, self.start) { 106 if !range.contains_inclusive(self.start) {
111 return None; 107 return None;
112 } 108 }
113 Some(TextRange::from_to(self.start, range.end())) 109 Some(TextRange::from_to(self.start, range.end()))