about summary refs log tree commit diff
path: root/src/tools
diff options
context:
space:
mode:
authorLaurențiu Nicola <lnicola@users.noreply.github.com>2025-09-11 05:08:00 +0000
committerGitHub <noreply@github.com>2025-09-11 05:08:00 +0000
commit7f38c057dcb407f477bc69aa20166be76f0d33fe (patch)
tree279f22627953682a0fbb514b487cf2269ba4eec7 /src/tools
parent1800ec19311e02957fd2c316c0e15854f722dcf6 (diff)
parent2d87bc3e6bfc9e6ccda01a5898980b1e0a706708 (diff)
downloadrust-7f38c057dcb407f477bc69aa20166be76f0d33fe.tar.gz
rust-7f38c057dcb407f477bc69aa20166be76f0d33fe.zip
Merge pull request #20653 from A4-Tacks/gen-function-empty-gen-param
Fix empty generic param list for generate_function
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs
index 88ed6f9ce12..a9cf2c1bae1 100644
--- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs
+++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs
@@ -364,11 +364,13 @@ impl FunctionBuilder {
             Visibility::Crate => Some(make::visibility_pub_crate()),
             Visibility::Pub => Some(make::visibility_pub()),
         };
+        let type_params =
+            self.generic_param_list.filter(|list| list.generic_params().next().is_some());
         let fn_def = make::fn_(
             None,
             visibility,
             self.fn_name,
-            self.generic_param_list,
+            type_params,
             self.where_clause,
             self.params,
             self.fn_body,
@@ -2416,6 +2418,33 @@ impl Foo {
     }
 
     #[test]
+    fn create_method_with_unused_generics() {
+        check_assist(
+            generate_function,
+            r#"
+struct Foo<S>(S);
+impl<S> Foo<S> {
+    fn foo(&self) {
+        self.bar()$0;
+    }
+}
+"#,
+            r#"
+struct Foo<S>(S);
+impl<S> Foo<S> {
+    fn foo(&self) {
+        self.bar();
+    }
+
+    fn bar(&self) ${0:-> _} {
+        todo!()
+    }
+}
+"#,
+        )
+    }
+
+    #[test]
     fn create_function_with_async() {
         check_assist(
             generate_function,