diff options
| author | Yukio Siraichi <yukio.siraichi@gmail.com> | 2018-03-17 15:41:46 -0300 |
|---|---|---|
| committer | Yukio Siraichi <yukio.siraichi@gmail.com> | 2018-03-18 20:46:28 -0300 |
| commit | 74a4928ed49d000dee9827c21f68148ad3aa271e (patch) | |
| tree | ebf3558038a9f22ddadff427c2c3368651d2eb01 /src/libsyntax/codemap.rs | |
| parent | c1ba5ac62c14ab5e231edcce914fd33f0e32c2d1 (diff) | |
| download | rust-74a4928ed49d000dee9827c21f68148ad3aa271e.tar.gz rust-74a4928ed49d000dee9827c21f68148ad3aa271e.zip | |
Review fixes.
- `span_suggestion` changed to `span_suggestion_short`; - `Span` used changed to contain only `&` refs; - Tests passing.
Diffstat (limited to 'src/libsyntax/codemap.rs')
| -rw-r--r-- | src/libsyntax/codemap.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index a1aec052088..324d57c1194 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -697,6 +697,22 @@ impl CodeMap { sp } + /// Given a `Span`, get a shorter one until `predicate` yields false. + pub fn span_take_while<P>(&self, sp: Span, predicate: P) -> Span + where P: for <'r> FnMut(&'r char) -> bool + { + if let Ok(snippet) = self.span_to_snippet(sp) { + let offset = snippet.chars() + .take_while(predicate) + .map(|c| c.len_utf8()) + .sum::<usize>(); + + sp.with_hi(BytePos(sp.lo().0 + (offset as u32))) + } else { + sp + } + } + pub fn def_span(&self, sp: Span) -> Span { self.span_until_char(sp, '{') } |
