about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_variant.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs
index 87800364938..c68b587ad17 100644
--- a/crates/ide-assists/src/handlers/generate_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs
@@ -41,6 +41,10 @@ pub(crate) fn generate_enum_variant(acc: &mut Assists, ctx: &AssistContext) -> O
     }
 
     let name_ref = path.segment()?.name_ref()?;
+    if name_ref.text().as_str().chars().next()?.is_ascii_lowercase() {
+        // No need to generate anything if the name starts with a lowercase letter
+        return None;
+    }
 
     if let Some(hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Enum(e)))) =
         ctx.sema.resolve_path(&path.qualifier()?)
@@ -147,6 +151,21 @@ fn main() {
     }
 
     #[test]
+    fn not_applicable_for_lowercase() {
+        check_assist_not_applicable(
+            generate_enum_variant,
+            r"
+enum Foo {
+    Bar,
+}
+fn main() {
+    Foo::new$0
+}
+",
+        )
+    }
+
+    #[test]
     fn indentation_level_is_correct() {
         check_assist(
             generate_enum_variant,