Skip to content

Commit f11cff8

Browse files
committed
Auto merge of rust-lang#14116 - Veykril:inlay-hints-disc, r=Veykril
Render discriminant inlay hints for mixed variants if at least one discriminant is specified
2 parents e2b868c + 557aa1e commit f11cff8

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

crates/ide/src/inlay_hints/discriminant.rs

+25-5
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@ pub(super) fn enum_hints(
1919
_: FileId,
2020
enum_: ast::Enum,
2121
) -> Option<()> {
22-
let disabled = match config.discriminant_hints {
23-
DiscriminantHints::Always => false,
24-
DiscriminantHints::Fieldless => sema.to_def(&enum_)?.is_data_carrying(sema.db),
25-
DiscriminantHints::Never => true,
22+
let enabled = match config.discriminant_hints {
23+
DiscriminantHints::Always => true,
24+
DiscriminantHints::Fieldless => {
25+
!sema.to_def(&enum_)?.is_data_carrying(sema.db)
26+
|| enum_.variant_list()?.variants().any(|v| v.expr().is_some())
27+
}
28+
DiscriminantHints::Never => false,
2629
};
27-
if disabled {
30+
if !enabled {
2831
return None;
2932
}
3033
for variant in enum_.variant_list()?.variants() {
@@ -161,8 +164,25 @@ enum Enum {
161164
Variant1,
162165
Variant2 {},
163166
Variant3,
167+
Variant5,
168+
Variant6,
169+
}
170+
"#,
171+
);
172+
check_discriminants_fieldless(
173+
r#"
174+
enum Enum {
175+
Variant(),
176+
//^^^^^^^^^0
177+
Variant1,
178+
//^^^^^^^^1
179+
Variant2 {},
180+
//^^^^^^^^^^^2
181+
Variant3,
182+
//^^^^^^^^3
164183
Variant5 = 5,
165184
Variant6,
185+
//^^^^^^^^6
166186
}
167187
"#,
168188
);

0 commit comments

Comments
 (0)