diff options
| author | Michael Goulet <michael@errs.io> | 2024-04-07 19:38:05 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-04-09 14:06:09 -0400 |
| commit | 3253c021cbd3bca49393db6a2372764ec53f5920 (patch) | |
| tree | aa98877babf4fc35d688b15a02b963ec774a0e6f /compiler/rustc_span/src/source_map.rs | |
| parent | a439eb259da620fa95c67c0c6e89f196bcb61f08 (diff) | |
| download | rust-3253c021cbd3bca49393db6a2372764ec53f5920.tar.gz rust-3253c021cbd3bca49393db6a2372764ec53f5920.zip | |
Add a helper for extending a span to include any trailing whitespace
Diffstat (limited to 'compiler/rustc_span/src/source_map.rs')
| -rw-r--r-- | compiler/rustc_span/src/source_map.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler/rustc_span/src/source_map.rs b/compiler/rustc_span/src/source_map.rs index 770624d331d..f721a04d6b9 100644 --- a/compiler/rustc_span/src/source_map.rs +++ b/compiler/rustc_span/src/source_map.rs @@ -654,6 +654,12 @@ impl SourceMap { }) } + /// Extends the span to include any trailing whitespace, or returns the original + /// span if a `SpanSnippetError` was encountered. + pub fn span_extend_while_whitespace(&self, span: Span) -> Span { + self.span_extend_while(span, char::is_whitespace).unwrap_or(span) + } + /// Extends the given `Span` to previous character while the previous character matches the predicate pub fn span_extend_prev_while( &self, @@ -1034,12 +1040,9 @@ impl SourceMap { /// // ^^^^^^ input /// ``` pub fn mac_call_stmt_semi_span(&self, mac_call: Span) -> Option<Span> { - let span = self.span_extend_while(mac_call, char::is_whitespace).ok()?; - let span = span.shrink_to_hi().with_hi(BytePos(span.hi().0.checked_add(1)?)); - if self.span_to_snippet(span).as_deref() != Ok(";") { - return None; - } - Some(span) + let span = self.span_extend_while_whitespace(mac_call); + let span = self.next_point(span); + if self.span_to_snippet(span).as_deref() == Ok(";") { Some(span) } else { None } } } |
