about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHmikihiro <34ttrweoewiwe28@gmail.com>2025-08-09 14:53:34 +0900
committerHmikihiro <34ttrweoewiwe28@gmail.com>2025-08-09 15:48:10 +0900
commite3d99ddcbc010de4942df34e6d5491c4b664152c (patch)
tree4a4ea525c556bc109a7ab91957c15d7acc579643
parentec8426d5a4660384fe5583c0608add92655f3c9a (diff)
downloadrust-e3d99ddcbc010de4942df34e6d5491c4b664152c.tar.gz
rust-e3d99ddcbc010de4942df34e6d5491c4b664152c.zip
fix: generate function by indet token
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_function.rs30
1 files changed, 29 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 efdb20c1e93..88ed6f9ce12 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
@@ -316,7 +316,7 @@ impl FunctionBuilder {
         let current_module = ctx.sema.scope(call.syntax())?.module();
         let visibility = calculate_necessary_visibility(current_module, target_module, ctx);
 
-        let fn_name = make::name(&name.text());
+        let fn_name = make::name(name.ident_token()?.text());
         let mut necessary_generic_params = FxHashSet::default();
         necessary_generic_params.extend(receiver_ty.generic_params(ctx.db()));
         let params = fn_args(
@@ -3131,4 +3131,32 @@ fn main() {
         "#,
         )
     }
+
+    #[test]
+    fn no_generate_method_by_keyword() {
+        check_assist_not_applicable(
+            generate_function,
+            r#"
+fn main() {
+    s.super$0();
+}
+        "#,
+        );
+        check_assist_not_applicable(
+            generate_function,
+            r#"
+fn main() {
+    s.Self$0();
+}
+        "#,
+        );
+        check_assist_not_applicable(
+            generate_function,
+            r#"
+fn main() {
+    s.self$0();
+}
+        "#,
+        );
+    }
 }