diff options
-rw-r--r-- | crates/ide_assists/src/lib.rs | 2 | ||||
-rw-r--r-- | crates/rust-analyzer/src/handlers.rs | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/crates/ide_assists/src/lib.rs b/crates/ide_assists/src/lib.rs index 723531078..2e0c58504 100644 --- a/crates/ide_assists/src/lib.rs +++ b/crates/ide_assists/src/lib.rs | |||
@@ -102,7 +102,7 @@ pub enum AssistResolveStrategy { | |||
102 | None, | 102 | None, |
103 | /// All assists should be resolved. | 103 | /// All assists should be resolved. |
104 | All, | 104 | All, |
105 | /// Only a certain assists should be resolved. | 105 | /// Only a certain assist should be resolved. |
106 | Single(SingleResolve), | 106 | Single(SingleResolve), |
107 | } | 107 | } |
108 | 108 | ||
diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 77faf7579..0fd03bbaa 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs | |||
@@ -1076,7 +1076,17 @@ pub(crate) fn handle_code_action_resolve( | |||
1076 | frange, | 1076 | frange, |
1077 | )?; | 1077 | )?; |
1078 | 1078 | ||
1079 | let assist = &assists[params.index]; | 1079 | let assist = match assists.get(params.index) { |
1080 | Some(assist) => assist, | ||
1081 | None => return Err(LspError::new( | ||
1082 | ErrorCode::InvalidParams as i32, | ||
1083 | format!( | ||
1084 | "Failed to find the assist for index {} provided by the resolve request. Expected assist id: {:?}", | ||
1085 | params.index, params.id, | ||
1086 | ), | ||
1087 | ) | ||
1088 | .into()) | ||
1089 | }; | ||
1080 | if assist.id.0 != params.id || assist.id.1 != assist_kind { | 1090 | if assist.id.0 != params.id || assist.id.1 != assist_kind { |
1081 | return Err(LspError::new( | 1091 | return Err(LspError::new( |
1082 | ErrorCode::InvalidParams as i32, | 1092 | ErrorCode::InvalidParams as i32, |