diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs index 9a9adf26a6df..372d34e92993 100644 --- a/crates/ide-assists/src/handlers/extract_function.rs +++ b/crates/ide-assists/src/handlers/extract_function.rs @@ -1410,6 +1410,9 @@ fn node_to_insert_after(body: &FunctionBody, anchor: Anchor) -> Option (), } @@ -2971,6 +2974,35 @@ impl S { ); } + #[test] + fn method_in_trait() { + check_assist( + extract_function, + r#" +trait Foo { + fn f(&self) -> i32; + + fn foo(&self) -> i32 { + $0self.f()+self.f()$0 + } +} +"#, + r#" +trait Foo { + fn f(&self) -> i32; + + fn foo(&self) -> i32 { + self.fun_name() + } + + fn $0fun_name(&self) -> i32 { + self.f()+self.f() + } +} +"#, + ); + } + #[test] fn variable_defined_inside_and_used_after_no_ret() { check_assist(