mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-29 06:23:25 +00:00
fix: keep attrs for assist 'generate_delegate_trait'
This commit is contained in:
parent
7c786ed96f
commit
faea7fca01
1 changed files with 15 additions and 2 deletions
|
@ -16,7 +16,8 @@ use syntax::{
|
||||||
ast::{
|
ast::{
|
||||||
self,
|
self,
|
||||||
edit::{self, AstNodeEdit},
|
edit::{self, AstNodeEdit},
|
||||||
make, AssocItem, GenericArgList, GenericParamList, HasGenericParams, HasName,
|
edit_in_place::AttrsOwnerEdit,
|
||||||
|
make, AssocItem, GenericArgList, GenericParamList, HasAttrs, HasGenericParams, HasName,
|
||||||
HasTypeBounds, HasVisibility as astHasVisibility, Path, WherePred,
|
HasTypeBounds, HasVisibility as astHasVisibility, Path, WherePred,
|
||||||
},
|
},
|
||||||
ted::{self, Position},
|
ted::{self, Position},
|
||||||
|
@ -619,7 +620,8 @@ fn process_assoc_item(
|
||||||
qual_path_ty: ast::Path,
|
qual_path_ty: ast::Path,
|
||||||
base_name: &str,
|
base_name: &str,
|
||||||
) -> Option<ast::AssocItem> {
|
) -> Option<ast::AssocItem> {
|
||||||
match item {
|
let attrs = item.attrs();
|
||||||
|
let assoc = match item {
|
||||||
AssocItem::Const(c) => const_assoc_item(c, qual_path_ty),
|
AssocItem::Const(c) => const_assoc_item(c, qual_path_ty),
|
||||||
AssocItem::Fn(f) => func_assoc_item(f, qual_path_ty, base_name),
|
AssocItem::Fn(f) => func_assoc_item(f, qual_path_ty, base_name),
|
||||||
AssocItem::MacroCall(_) => {
|
AssocItem::MacroCall(_) => {
|
||||||
|
@ -628,7 +630,18 @@ fn process_assoc_item(
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
AssocItem::TypeAlias(ta) => ty_assoc_item(ta, qual_path_ty),
|
AssocItem::TypeAlias(ta) => ty_assoc_item(ta, qual_path_ty),
|
||||||
|
};
|
||||||
|
if let Some(assoc) = &assoc {
|
||||||
|
attrs.for_each(|attr| {
|
||||||
|
assoc.add_attr(attr.clone());
|
||||||
|
// fix indentations
|
||||||
|
if let Some(tok) = attr.syntax().next_sibling_or_token() {
|
||||||
|
let pos = Position::after(tok);
|
||||||
|
ted::insert(pos, make::tokens::whitespace(" "));
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
assoc
|
||||||
}
|
}
|
||||||
|
|
||||||
fn const_assoc_item(item: syntax::ast::Const, qual_path_ty: ast::Path) -> Option<AssocItem> {
|
fn const_assoc_item(item: syntax::ast::Const, qual_path_ty: ast::Path) -> Option<AssocItem> {
|
||||||
|
|
Loading…
Reference in a new issue