about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates/ide-assists
diff options
context:
space:
mode:
authorsgasho <SuganoShota1999@gmail.com>2025-08-11 22:19:50 +0900
committersgasho <SuganoShota1999@gmail.com>2025-08-12 21:53:50 +0900
commit875c158686fc47e083c83d1ccee4359ba4cc64f9 (patch)
treeb0c8a9adf6afc680b7efe705f2bc7c5f52b78b20 /src/tools/rust-analyzer/crates/ide-assists
parente52666380f6f03fb1211138171e0ef626ceb468d (diff)
downloadrust-875c158686fc47e083c83d1ccee4359ba4cc64f9.tar.gz
rust-875c158686fc47e083c83d1ccee4359ba4cc64f9.zip
fix: Implement default member to resolve IdentPat
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-assists')
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs
index 11201afb8a7..7e03eb30304 100644
--- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs
+++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_impl_members.rs
@@ -2421,4 +2421,53 @@ impl other_file_2::Trait for MyStruct {
 }"#,
         );
     }
+
+    #[test]
+    fn test_qualify_ident_pat_in_default_members() {
+        check_assist(
+            add_missing_default_members,
+            r#"
+//- /lib.rs crate:b new_source_root:library
+pub enum State {
+    Active,
+    Inactive,
+}
+
+use State::*;
+
+pub trait Checker {
+    fn check(&self) -> State;
+
+    fn is_active(&self) -> bool {
+        match self.check() {
+            Active => true,
+            Inactive => false,
+        }
+    }
+}
+//- /main.rs crate:a deps:b
+struct MyChecker;
+
+impl b::Checker for MyChecker {
+    fn check(&self) -> b::State {
+        todo!();
+    }$0
+}"#,
+            r#"
+struct MyChecker;
+
+impl b::Checker for MyChecker {
+    fn check(&self) -> b::State {
+        todo!();
+    }
+
+    $0fn is_active(&self) -> bool {
+        match self.check() {
+            b::State::Active => true,
+            b::State::Inactive => false,
+        }
+    }
+}"#,
+        );
+    }
 }