From ed121ecc2af7529a1bb1c23a08d1d460711c70d8 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 12 Jan 2025 14:04:35 +0100 Subject: [PATCH] Fix text edits for discriminant hints --- .../ide/src/inlay_hints/discriminant.rs | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs index f720c06048cc..5a147adabcf4 100644 --- a/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs +++ b/src/tools/rust-analyzer/crates/ide/src/inlay_hints/discriminant.rs @@ -90,7 +90,7 @@ fn variant_hints( kind: InlayKind::Discriminant, label, text_edit: d.ok().map(|val| { - config.lazy_text_edit(|| TextEdit::insert(range.start(), format!("{eq_} {val}"))) + config.lazy_text_edit(|| TextEdit::insert(range.end(), format!("{eq_} {val}"))) }), position: InlayHintPosition::After, pad_left: false, @@ -102,8 +102,10 @@ fn variant_hints( } #[cfg(test)] mod tests { + use expect_test::expect; + use crate::inlay_hints::{ - tests::{check_with_config, DISABLED_CONFIG}, + tests::{check_edit, check_with_config, DISABLED_CONFIG}, DiscriminantHints, InlayHintsConfig, }; @@ -210,4 +212,33 @@ enum Enum { "#, ); } + + #[test] + fn edit() { + check_edit( + InlayHintsConfig { discriminant_hints: DiscriminantHints::Always, ..DISABLED_CONFIG }, + r#" +#[repr(u8)] +enum Enum { + Variant(), + Variant1, + Variant2 {}, + Variant3, + Variant5, + Variant6, +} +"#, + expect![[r#" + #[repr(u8)] + enum Enum { + Variant() = 0, + Variant1 = 1, + Variant2 {} = 2, + Variant3 = 3, + Variant5 = 4, + Variant6 = 5, + } + "#]], + ); + } }