diff options
| author | Frank King <frankking1729@gmail.com> | 2022-02-07 10:57:39 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-06 20:57:39 -0600 |
| commit | 5df8c8f7e554e036fcb14a2d93d145c92d56bc2e (patch) | |
| tree | df42d71743e48fd9778d6c8d80d7dd8e153288b6 /src | |
| parent | fd6e11cc57da5728a9a52c0a515fd80e811a43d5 (diff) | |
| download | rust-5df8c8f7e554e036fcb14a2d93d145c92d56bc2e.tar.gz rust-5df8c8f7e554e036fcb14a2d93d145c92d56bc2e.zip | |
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`
Diffstat (limited to 'src')
| -rw-r--r-- | src/spanned.rs | 15 | ||||
| -rw-r--r-- | src/types.rs | 11 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/spanned.rs b/src/spanned.rs index 8e6c75a3744..2136cfeae1a 100644 --- a/src/spanned.rs +++ b/src/spanned.rs @@ -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() diff --git a/src/types.rs b/src/types.rs index 5de30129266..b13e75a93b3 100644 --- a/src/types.rs +++ b/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(' '); + } + } _ => (), } |
