internal: use idiomatic form of assertions

Ideally, we should just return an InvalidParameter dialog here, but that
shows error message to the end user, and we generally avoid that
This commit is contained in:
Aleksey Kladov 2021-08-24 13:13:38 +03:00
parent fa6a4a0c93
commit 1660820e51
2 changed files with 9 additions and 5 deletions

View file

@ -7,6 +7,7 @@ use std::{
process::{self, Stdio},
};
use always_assert::always;
use ide::{
AnnotationConfig, AssistKind, AssistResolveStrategy, FileId, FilePosition, FileRange,
HoverAction, HoverGotoTypeData, Query, RangeInfo, Runnable, RunnableKind, SingleResolve,
@ -265,10 +266,11 @@ pub(crate) fn handle_on_type_formatting(
// `text.char_at(position) == typed_char`.
position.offset -= TextSize::of('.');
let char_typed = params.ch.chars().next().unwrap_or('\0');
assert!({
let text = snap.analysis.file_text(position.file_id)?;
text[usize::from(position.offset)..].starts_with(char_typed)
});
let text = snap.analysis.file_text(position.file_id)?;
if !always!(text[usize::from(position.offset)..].starts_with(char_typed)) {
return Ok(None);
}
// We have an assist that inserts ` ` after typing `->` in `fn foo() ->{`,
// but it requires precise cursor positioning to work, and one can't

View file

@ -260,7 +260,9 @@ if idx >= len {
## Assertions
Assert liberally.
Prefer `stdx::never!` to standard `assert!`.
Prefer [`stdx::never!`](https://docs.rs/always-assert/0.1.2/always_assert/macro.never.html) to standard `assert!`.
**Rationale:** See [cross cutting concern: error handling](https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/architecture.md#error-handling).
## Getters & Setters