mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-29 20:46:07 +03:00
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:
+4
-11
@@ -113,17 +113,10 @@ fn span(&self) -> Span {
|
||||
|
||||
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()
|
||||
|
||||
+10
-1
@@ -575,7 +575,16 @@ fn rewrite(&self, context: &RewriteContext<'_>, shape: Shape) -> Option<String>
|
||||
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(' ');
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
>;
|
||||
Reference in New Issue
Block a user