Fix doc of generic items formmating error (#5124)
* Fix doc of generic items formmating error * Remove tracked `attrs_end_with_doc_comment` flag in `RewriteContext` * Fix duplicated doc comments of const generic params * Fix `<ast::GenericParam as Spanned>::span()` * Remove duplicated source file of `doc-of-generic-item.rs`
This commit is contained in:
parent
fd6e11cc57
commit
5df8c8f7e5
3 changed files with 28 additions and 12 deletions
|
|
@ -113,17 +113,10 @@ impl Spanned for ast::Param {
|
|||
|
||||
impl Spanned for ast::GenericParam {
|
||||
fn span(&self) -> Span {
|
||||
let lo = if let ast::GenericParamKind::Const {
|
||||
ty: _,
|
||||
kw_span,
|
||||
default: _,
|
||||
} = self.kind
|
||||
{
|
||||
kw_span.lo()
|
||||
} else if self.attrs.is_empty() {
|
||||
self.ident.span.lo()
|
||||
} else {
|
||||
self.attrs[0].span.lo()
|
||||
let lo = match self.kind {
|
||||
_ if !self.attrs.is_empty() => self.attrs[0].span.lo(),
|
||||
ast::GenericParamKind::Const { kw_span, .. } => kw_span.lo(),
|
||||
_ => self.ident.span.lo(),
|
||||
};
|
||||
let hi = if self.bounds.is_empty() {
|
||||
self.ident.span.hi()
|
||||
|
|
|
|||
11
src/types.rs
11
src/types.rs
|
|
@ -575,7 +575,16 @@ impl Rewrite for ast::GenericParam {
|
|||
let mut result = String::with_capacity(128);
|
||||
// FIXME: If there are more than one attributes, this will force multiline.
|
||||
match self.attrs.rewrite(context, shape) {
|
||||
Some(ref rw) if !rw.is_empty() => result.push_str(&format!("{} ", rw)),
|
||||
Some(ref rw) if !rw.is_empty() => {
|
||||
result.push_str(rw);
|
||||
// When rewriting generic params, an extra newline should be put
|
||||
// if the attributes end with a doc comment
|
||||
if let Some(true) = self.attrs.last().map(|a| a.is_doc_comment()) {
|
||||
result.push_str(&shape.indent.to_string_with_newline(context.config));
|
||||
} else {
|
||||
result.push(' ');
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
|
|
|
|||
14
tests/target/doc-of-generic-item.rs
Normal file
14
tests/target/doc-of-generic-item.rs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Non-doc pre-comment of Foo
|
||||
/// doc of Foo
|
||||
// Non-doc post-comment of Foo
|
||||
struct Foo<
|
||||
// Non-doc pre-comment of 'a
|
||||
/// doc of 'a
|
||||
'a,
|
||||
// Non-doc pre-comment of T
|
||||
/// doc of T
|
||||
T,
|
||||
// Non-doc pre-comment of N
|
||||
/// doc of N
|
||||
const N: item,
|
||||
>;
|
||||
Loading…
Add table
Add a link
Reference in a new issue