Less panics in the assist resolution

This commit is contained in:
Kirill Bulatov 2021-05-03 18:18:45 +03:00
parent 28293d370f
commit b1d600a1ec

View File

@ -1077,8 +1077,16 @@ pub(crate) fn handle_code_action_resolve(
)?; )?;
let assist = &assists[params.index]; let assist = &assists[params.index];
assert!(assist.id.0 == params.id); if assist.id.0 != params.id || assist.id.1 != assist_kind {
assert!(assist.id.1 == assist_kind); return Err(LspError::new(
ErrorCode::InvalidParams as i32,
format!(
"Failed to find exactly the same assist at index {} for the resolve parameters given. Expected id and kind: {}, {:?}, actual id: {:?}.",
params.index, params.id, assist_kind, assist.id
),
)
.into());
}
let edit = to_proto::code_action(&snap, assist.clone(), None)?.edit; let edit = to_proto::code_action(&snap, assist.clone(), None)?.edit;
code_action.edit = edit; code_action.edit = edit;
Ok(code_action) Ok(code_action)