diff options
| author | Tshepang Mbambo <tshepang@gmail.com> | 2025-04-19 16:06:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-19 16:06:07 +0200 |
| commit | b886a8e654ab660f2f2cd02c68bf170dd4918fd8 (patch) | |
| tree | 86e6a9ab8518740ca6ce8deae8f409ee9c309f20 /compiler/rustc_span/src/source_map.rs | |
| parent | 52616fa902a9a551ba4e574bee41dbf6162746f4 (diff) | |
| parent | 07b7f00a9e961fdf66ece2ecf70ae1dba505f10e (diff) | |
Merge pull request #2347 from rust-lang/rustc-pull
Rustc pull update
Diffstat (limited to 'compiler/rustc_span/src/source_map.rs')
| -rw-r--r-- | compiler/rustc_span/src/source_map.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/rustc_span/src/source_map.rs b/compiler/rustc_span/src/source_map.rs index 6fdf8e46fec..0273bb040f4 100644 --- a/compiler/rustc_span/src/source_map.rs +++ b/compiler/rustc_span/src/source_map.rs @@ -633,6 +633,24 @@ impl SourceMap { sp } + /// Extends the given `Span` to just before the previous occurrence of `c`. Return the same span + /// if an error occurred while retrieving the code snippet. + pub fn span_extend_to_prev_char_before( + &self, + sp: Span, + c: char, + accept_newlines: bool, + ) -> Span { + if let Ok(prev_source) = self.span_to_prev_source(sp) { + let prev_source = prev_source.rsplit(c).next().unwrap_or(""); + if accept_newlines || !prev_source.contains('\n') { + return sp.with_lo(BytePos(sp.lo().0 - prev_source.len() as u32 - 1_u32)); + } + } + + sp + } + /// Extends the given `Span` to just after the previous occurrence of `pat` when surrounded by /// whitespace. Returns None if the pattern could not be found or if an error occurred while /// retrieving the code snippet. |
