Unnamed repository; edit this file 'description' to name the repository.
Merge #10533
10533: fix: Fix AssistContext panic on sole whitespace selection r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <[email protected]>
| -rw-r--r-- | crates/ide_assists/src/assist_context.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/ide_assists/src/assist_context.rs b/crates/ide_assists/src/assist_context.rs index d6fd27efac..34b0ffc97d 100644 --- a/crates/ide_assists/src/assist_context.rs +++ b/crates/ide_assists/src/assist_context.rs @@ -77,9 +77,14 @@ impl<'a> AssistContext<'a> { left.right_biased().and_then(|t| algo::skip_whitespace_token(t, Direction::Next)); let right = right.left_biased().and_then(|t| algo::skip_whitespace_token(t, Direction::Prev)); - let left = left.map(|t| t.text_range().start()).unwrap_or(start).clamp(start, end); - let right = right.map(|t| t.text_range().end()).unwrap_or(end).clamp(start, end); - let trimmed_range = TextRange::new(left, right); + let left = left.map(|t| t.text_range().start().clamp(start, end)); + let right = right.map(|t| t.text_range().end().clamp(start, end)); + + let trimmed_range = match (left, right) { + (Some(left), Some(right)) if left <= right => TextRange::new(left, right), + // Selection solely consists of whitespace so just fall back to the original + _ => frange.range, + }; AssistContext { config, sema, frange, source_file, trimmed_range } } |