//! FIXME: write short doc here
use std::{
convert::TryInto,
- error::Error,
fmt::{self, Display},
};
}
}
-impl Error for RenameError {}
-
macro_rules! format_err {
($fmt:expr) => {RenameError(format!($fmt))};
($fmt:expr, $($arg:tt)+) => {RenameError(format!($fmt, $($arg)+))}
let _p = profile::span("handle_prepare_rename");
let position = from_proto::file_position(&snap, params)?;
- let change = snap.analysis.prepare_rename(position)??;
+ let change = snap.analysis.prepare_rename(position)?.map_err(to_proto::rename_error)?;
+
let line_index = snap.analysis.file_line_index(position.file_id)?;
let range = to_proto::range(&line_index, change.range);
Ok(Some(PrepareRenameResponse::Range(range)))
let _p = profile::span("handle_rename");
let position = from_proto::file_position(&snap, params.text_document_position)?;
- if params.new_name.is_empty() {
- return Err(LspError::new(
- ErrorCode::InvalidParams as i32,
- "New Name cannot be empty".into(),
- )
- .into());
- }
-
- let change = snap.analysis.rename(position, &*params.new_name)??;
+ let change =
+ snap.analysis.rename(position, &*params.new_name)?.map_err(to_proto::rename_error)?;
let workspace_edit = to_proto::workspace_edit(&snap, change.info)?;
Ok(Some(workspace_edit))
}
Assist, AssistKind, CallInfo, CompletionItem, CompletionItemKind, Documentation, FileId,
FileRange, FileSystemEdit, Fold, FoldKind, Highlight, HlMod, HlPunct, HlRange, HlTag, Indel,
InlayHint, InlayKind, InsertTextFormat, LineIndex, Markup, NavigationTarget, ReferenceAccess,
- Runnable, Severity, SourceChange, SourceFileEdit, SymbolKind, TextEdit, TextRange, TextSize,
+ RenameError, Runnable, Severity, SourceChange, SourceFileEdit, SymbolKind, TextEdit, TextRange,
+ TextSize,
};
use itertools::Itertools;
lsp_types::MarkupContent { kind: lsp_types::MarkupKind::Markdown, value }
}
+pub(crate) fn rename_error(err: RenameError) -> crate::LspError {
+ crate::LspError { code: lsp_server::ErrorCode::InvalidParams as i32, message: err.to_string() }
+}
+
#[cfg(test)]
mod tests {
use ide::Analysis;