mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Add generic parameters for manual impl assist
The `impl_trait` function takes an optional `GenericParamList` to create the trait impl.
This commit is contained in:
parent
4f93fa1213
commit
05b368f065
2 changed files with 13 additions and 5 deletions
|
@ -3,7 +3,7 @@ use ide_db::helpers::{import_assets::NameToImport, mod_path_to_ast};
|
|||
use ide_db::items_locator;
|
||||
use itertools::Itertools;
|
||||
use syntax::{
|
||||
ast::{self, make, AstNode, HasName},
|
||||
ast::{self, make, AstNode, HasGenericParams, HasName},
|
||||
SyntaxKind::{IDENT, WHITESPACE},
|
||||
};
|
||||
|
||||
|
@ -160,8 +160,11 @@ fn impl_def_from_trait(
|
|||
if trait_items.is_empty() {
|
||||
return None;
|
||||
}
|
||||
let impl_def =
|
||||
make::impl_trait(trait_path.clone(), make::ext::ident_path(&annotated_name.text()));
|
||||
let impl_def = make::impl_trait(
|
||||
trait_path.clone(),
|
||||
make::ext::ident_path(&annotated_name.text()),
|
||||
adt.generic_param_list(),
|
||||
);
|
||||
let (impl_def, first_assoc_item) =
|
||||
add_trait_assoc_items_to_impl(sema, trait_items, trait_, impl_def, target_scope);
|
||||
|
||||
|
|
|
@ -149,8 +149,13 @@ pub fn impl_(
|
|||
ast_from_text(&format!("impl{} {}{} {{}}", params, ty, ty_params))
|
||||
}
|
||||
|
||||
pub fn impl_trait(trait_: ast::Path, ty: ast::Path) -> ast::Impl {
|
||||
ast_from_text(&format!("impl {} for {} {{}}", trait_, ty))
|
||||
pub fn impl_trait(
|
||||
trait_: ast::Path,
|
||||
ty: ast::Path,
|
||||
ty_params: Option<ast::GenericParamList>,
|
||||
) -> ast::Impl {
|
||||
let ty_params = ty_params.map_or_else(String::new, |params| params.to_string());
|
||||
ast_from_text(&format!("impl{2} {} for {}{2} {{}}", trait_, ty, ty_params))
|
||||
}
|
||||
|
||||
pub(crate) fn generic_arg_list() -> ast::GenericArgList {
|
||||
|
|
Loading…
Reference in a new issue