about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-02-10 08:59:17 +0000
committerbors <bors@rust-lang.org>2023-02-10 08:59:17 +0000
commitf11cff89761aebfca183a8a01b1ae06d7459aa3c (patch)
treea0448722126cf093f8e8e730161ad15352fe3f53
parente2b868c5340a044b619faedd4f8436d0aec9ae47 (diff)
parent557aa1e37859dfa1d8de29b24183e18a19aae563 (diff)
downloadrust-f11cff89761aebfca183a8a01b1ae06d7459aa3c.tar.gz
rust-f11cff89761aebfca183a8a01b1ae06d7459aa3c.zip
Auto merge of #14116 - Veykril:inlay-hints-disc, r=Veykril
Render discriminant inlay hints for mixed variants if at least one discriminant is specified
-rw-r--r--crates/ide/src/inlay_hints/discriminant.rs30
1 files changed, 25 insertions, 5 deletions
diff --git a/crates/ide/src/inlay_hints/discriminant.rs b/crates/ide/src/inlay_hints/discriminant.rs
index c5c947150b3..5dd51ad11f4 100644
--- a/crates/ide/src/inlay_hints/discriminant.rs
+++ b/crates/ide/src/inlay_hints/discriminant.rs
@@ -19,12 +19,15 @@ pub(super) fn enum_hints(
     _: FileId,
     enum_: ast::Enum,
 ) -> Option<()> {
-    let disabled = match config.discriminant_hints {
-        DiscriminantHints::Always => false,
-        DiscriminantHints::Fieldless => sema.to_def(&enum_)?.is_data_carrying(sema.db),
-        DiscriminantHints::Never => true,
+    let enabled = match config.discriminant_hints {
+        DiscriminantHints::Always => true,
+        DiscriminantHints::Fieldless => {
+            !sema.to_def(&enum_)?.is_data_carrying(sema.db)
+                || enum_.variant_list()?.variants().any(|v| v.expr().is_some())
+        }
+        DiscriminantHints::Never => false,
     };
-    if disabled {
+    if !enabled {
         return None;
     }
     for variant in enum_.variant_list()?.variants() {
@@ -161,8 +164,25 @@ enum Enum {
     Variant1,
     Variant2 {},
     Variant3,
+    Variant5,
+    Variant6,
+}
+"#,
+        );
+        check_discriminants_fieldless(
+            r#"
+enum Enum {
+    Variant(),
+  //^^^^^^^^^0
+    Variant1,
+  //^^^^^^^^1
+    Variant2 {},
+  //^^^^^^^^^^^2
+    Variant3,
+  //^^^^^^^^3
     Variant5 = 5,
     Variant6,
+  //^^^^^^^^6
 }
 "#,
         );