diff --git a/crates/rust-analyzer/src/lsp_ext.rs b/crates/rust-analyzer/src/lsp_ext.rs index 7e7f96da21e1..1681c766f363 100644 --- a/crates/rust-analyzer/src/lsp_ext.rs +++ b/crates/rust-analyzer/src/lsp_ext.rs @@ -242,21 +242,25 @@ pub struct InlayHintsParams { pub text_document: TextDocumentIdentifier, } -#[derive(Debug, PartialEq, Eq, Deserialize, Serialize)] -pub enum InlayKind { - Other, - Type, - Parameter, +#[derive(Eq, PartialEq, Debug, Copy, Clone, Serialize, Deserialize)] +#[serde(transparent)] +pub struct InlayHintKind(u8); + +impl InlayHintKind { + pub const OTHER: InlayHintKind = InlayHintKind(0); + pub const TYPE: InlayHintKind = InlayHintKind(1); + pub const PARAMETER: InlayHintKind = InlayHintKind(2); } #[derive(Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] pub struct InlayHint { - pub text: String, - pub range: Range, - pub kind: Option, - pub description: Option, - pub whitespace_before: Option, - pub whitespace_after: Option, + pub label: String, + pub position: Position, + pub kind: Option, + pub tooltip: Option, + pub padding_left: Option, + pub padding_right: Option, } pub enum Ssr {} diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs index a5d7b3a86f78..59b5a9173986 100644 --- a/crates/rust-analyzer/src/to_proto.rs +++ b/crates/rust-analyzer/src/to_proto.rs @@ -412,16 +412,16 @@ pub(crate) fn signature_help( pub(crate) fn inlay_hint(line_index: &LineIndex, inlay_hint: InlayHint) -> lsp_ext::InlayHint { lsp_ext::InlayHint { - text: inlay_hint.label.to_string(), - range: range(line_index, inlay_hint.range), + label: inlay_hint.label.to_string(), + position: position(line_index, inlay_hint.range.start()), kind: Some(match inlay_hint.kind { - InlayKind::ParameterHint => lsp_ext::InlayKind::Parameter, - InlayKind::TypeHint => lsp_ext::InlayKind::Type, - InlayKind::ChainingHint => lsp_ext::InlayKind::Other, + InlayKind::ParameterHint => lsp_ext::InlayHintKind::PARAMETER, + InlayKind::TypeHint => lsp_ext::InlayHintKind::TYPE, + InlayKind::ChainingHint => lsp_ext::InlayHintKind::OTHER, }), - description: Some("test description".to_string()), - whitespace_before: Some(true), - whitespace_after: Some(true), + tooltip: Some("test description".to_string()), + padding_left: Some(true), + padding_right: Some(true), } }