Unnamed repository; edit this file 'description' to name the repository.
test: add tests for keeping attrs in assist 'generate_delegate_trait'
roife 2024-03-06
parent faea7fc · commit 5c9ce7b
-rw-r--r--crates/ide-assists/src/handlers/generate_delegate_trait.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/generate_delegate_trait.rs b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
index 92c10ec818..748acb46ef 100644
--- a/crates/ide-assists/src/handlers/generate_delegate_trait.rs
+++ b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
@@ -1716,4 +1716,65 @@ impl some_module::SomeTrait for B {
}"#,
)
}
+
+ #[test]
+ fn test_fn_with_attrs() {
+ check_assist(
+ generate_delegate_trait,
+ r#"
+struct A;
+
+trait T {
+ #[cfg(test)]
+ fn f(&self, a: u32);
+ #[cfg(not(test))]
+ fn f(&self, a: bool);
+}
+
+impl T for A {
+ #[cfg(test)]
+ fn f(&self, a: u32) {}
+ #[cfg(not(test))]
+ fn f(&self, a: bool) {}
+}
+
+struct B {
+ a$0: A,
+}
+"#,
+ r#"
+struct A;
+
+trait T {
+ #[cfg(test)]
+ fn f(&self, a: u32);
+ #[cfg(not(test))]
+ fn f(&self, a: bool);
+}
+
+impl T for A {
+ #[cfg(test)]
+ fn f(&self, a: u32) {}
+ #[cfg(not(test))]
+ fn f(&self, a: bool) {}
+}
+
+struct B {
+ a: A,
+}
+
+impl T for B {
+ #[cfg(test)]
+ fn f(&self, a: u32) {
+ <A as T>::f(&self.a, a)
+ }
+
+ #[cfg(not(test))]
+ fn f(&self, a: bool) {
+ <A as T>::f(&self.a, a)
+ }
+}
+"#,
+ );
+ }
}