From 720e727a9def48a05010c16bd1d661670a469c80 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 12 Jan 2025 13:14:00 +0100 Subject: [PATCH] fix: Fix `ref` text edit for binding mode hints --- crates/ide/src/inlay_hints/binding_mode.rs | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/crates/ide/src/inlay_hints/binding_mode.rs b/crates/ide/src/inlay_hints/binding_mode.rs index 5afb98cb1c74..ed2bd8d2a8fc 100644 --- a/crates/ide/src/inlay_hints/binding_mode.rs +++ b/crates/ide/src/inlay_hints/binding_mode.rs @@ -106,7 +106,7 @@ pub(super) fn hints( InlayHintPosition::Before => h.range.start(), InlayHintPosition::After => h.range.end(), }, - h.label.parts.iter().map(|p| &*p.text).collect(), + h.label.parts.iter().map(|p| &*p.text).chain(h.pad_right.then_some(" ")).collect(), ); } let edit = edit.finish(); @@ -118,8 +118,10 @@ pub(super) fn hints( #[cfg(test)] mod tests { + use expect_test::expect; + use crate::{ - inlay_hints::tests::{check_with_config, DISABLED_CONFIG}, + inlay_hints::tests::{check_edit, check_with_config, DISABLED_CONFIG}, InlayHintsConfig, }; @@ -194,4 +196,27 @@ fn foo(s @ Struct { field, .. }: &Struct) {} "#, ); } + + #[test] + fn edits() { + check_edit( + InlayHintsConfig { binding_mode_hints: true, ..DISABLED_CONFIG }, + r#" +fn main() { + match &(0,) { + (x,) | (x,) => (), + ((x,) | (x,)) => (), + } +} +"#, + expect![[r#" + fn main() { + match &(0,) { + &(&((ref x,) | (ref x,))) => (), + &((ref x,) | (ref x,)) => (), + } + } + "#]], + ); + } }