From 5c9ce7b11f941a951f35b24563ff9c9ff24fa786 Mon Sep 17 00:00:00 2001 From: roife Date: Wed, 6 Mar 2024 15:32:49 +0800 Subject: [PATCH] test: add tests for keeping attrs in assist 'generate_delegate_trait' --- .../src/handlers/generate_delegate_trait.rs | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) 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) { + ::f(&self.a, a) + } + + #[cfg(not(test))] + fn f(&self, a: bool) { + ::f(&self.a, a) + } +} +"#, + ); + } }