Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/item_list/trait_impl.rs')
-rw-r--r--crates/ide-completion/src/completions/item_list/trait_impl.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs
index 7384a3f2d8..4a1bacfa9d 100644
--- a/crates/ide-completion/src/completions/item_list/trait_impl.rs
+++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs
@@ -37,7 +37,7 @@ use ide_db::{
traits::get_missing_assoc_items, SymbolKind,
};
use syntax::{
- ast::{self, edit_in_place::AttrsOwnerEdit},
+ ast::{self, edit_in_place::AttrsOwnerEdit, HasTypeBounds},
AstNode, SyntaxElement, SyntaxKind, TextRange, T,
};
use text_edit::TextEdit;
@@ -265,10 +265,21 @@ fn add_type_alias_impl(
};
let start = transformed_ty.syntax().text_range().start();
- let Some(end) = transformed_ty
- .eq_token()
- .map(|tok| tok.text_range().start())
- .or(transformed_ty.semicolon_token().map(|tok| tok.text_range().start())) else { return };
+
+ let end = if let Some(end) =
+ transformed_ty.colon_token().map(|tok| tok.text_range().start())
+ {
+ end
+ } else if let Some(end) = transformed_ty.eq_token().map(|tok| tok.text_range().start())
+ {
+ end
+ } else if let Some(end) =
+ transformed_ty.semicolon_token().map(|tok| tok.text_range().start())
+ {
+ end
+ } else {
+ return;
+ };
let len = end - start;
let mut decl = transformed_ty.syntax().text().slice(..len).to_string();