Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/add_missing_impl_members.rs')
-rw-r--r--crates/ide-assists/src/handlers/add_missing_impl_members.rs69
1 files changed, 68 insertions, 1 deletions
diff --git a/crates/ide-assists/src/handlers/add_missing_impl_members.rs b/crates/ide-assists/src/handlers/add_missing_impl_members.rs
index 7e03eb3030..65ca1ceae1 100644
--- a/crates/ide-assists/src/handlers/add_missing_impl_members.rs
+++ b/crates/ide-assists/src/handlers/add_missing_impl_members.rs
@@ -130,7 +130,7 @@ fn add_missing_impl_members_inner(
if let IgnoreAssocItems::DocHiddenAttrPresent = ignore_items {
// Relax condition for local crates.
let db = ctx.db();
- if trait_.module(db).krate().origin(db).is_local() {
+ if trait_.module(db).krate(db).origin(db).is_local() {
ign_item = IgnoreAssocItems::No;
}
}
@@ -2470,4 +2470,71 @@ impl b::Checker for MyChecker {
}"#,
);
}
+
+ #[test]
+ fn test_parameter_names_matching_macros_not_qualified() {
+ // Parameter names that match macro names should not be qualified
+ check_assist(
+ add_missing_impl_members,
+ r#"
+//- /lib.rs crate:dep
+#[macro_export]
+macro_rules! my_macro {
+ () => {}
+}
+
+pub trait Foo {
+ fn foo(&self, my_macro: usize);
+}
+
+//- /main.rs crate:main deps:dep
+struct Bar;
+
+impl dep::Foo for Bar {$0}
+"#,
+ r#"
+struct Bar;
+
+impl dep::Foo for Bar {
+ fn foo(&self, my_macro: usize) {
+ ${0:todo!()}
+ }
+}
+"#,
+ );
+ }
+
+ #[test]
+ fn regression_test_for_when_impl_for_unit() {
+ check_assist(
+ add_missing_impl_members,
+ r#"
+trait Test {
+ fn f<B>()
+ where
+ B: IntoIterator,
+ <B as IntoIterator>::Item: Copy;
+}
+impl Test for () {
+ $0
+}
+"#,
+ r#"
+trait Test {
+ fn f<B>()
+ where
+ B: IntoIterator,
+ <B as IntoIterator>::Item: Copy;
+}
+impl Test for () {
+ fn f<B>()
+ where
+ B: IntoIterator,
+ <B as IntoIterator>::Item: Copy {
+ ${0:todo!()}
+ }
+}
+"#,
+ );
+ }
}