Unnamed repository; edit this file 'description' to name the repository.
Avoid cloning IMPL node if we don't have to
Tiddo Langerak 2022-08-10
parent 7c56896 · commit 7402366
-rw-r--r--crates/ide-assists/src/handlers/extract_function.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs
index 40d0327ef7..969b0c1fb3 100644
--- a/crates/ide-assists/src/handlers/extract_function.rs
+++ b/crates/ide-assists/src/handlers/extract_function.rs
@@ -1288,6 +1288,9 @@ fn last_impl_member(impl_node: &SyntaxNode) -> Option<SyntaxNode> {
}
fn is_trait_impl(node: &SyntaxNode) -> bool {
+ if !ast::Impl::can_cast(node.kind()) {
+ return false;
+ }
match ast::Impl::cast(node.clone()) {
Some(c) => c.trait_().is_some(),
None => false,
@@ -1295,6 +1298,9 @@ fn is_trait_impl(node: &SyntaxNode) -> bool {
}
fn impl_type_name(impl_node: &SyntaxNode) -> Option<String> {
+ if !ast::Impl::can_cast(impl_node.kind()) {
+ return None;
+ }
Some(ast::Impl::cast(impl_node.clone())?.self_ty()?.to_string())
}