Default annotation incorrectly removed on associated types

Fixed by adding a specific function to perform formatting on `ImplItems`.
This commit is contained in:
David Wickes 2017-02-26 21:43:49 +00:00
parent 4f91f02ad1
commit 094c8898e1
2 changed files with 24 additions and 6 deletions

View File

@ -1267,6 +1267,22 @@ pub fn rewrite_associated_type(ident: ast::Ident,
}
}
pub fn rewrite_associated_impl_type(ident: ast::Ident,
defaultness: ast::Defaultness,
ty_opt: Option<&ptr::P<ast::Ty>>,
ty_param_bounds_opt: Option<&ast::TyParamBounds>,
context: &RewriteContext,
indent: Indent)
-> Option<String> {
let result =
try_opt!(rewrite_associated_type(ident, ty_opt, ty_param_bounds_opt, context, indent));
match defaultness {
ast::Defaultness::Default => Some(format!("default {}", result)),
_ => Some(result),
}
}
impl Rewrite for ast::FunctionRetTy {
fn rewrite(&self, context: &RewriteContext, shape: Shape) -> Option<String> {
match *self {

View File

@ -21,7 +21,8 @@ use config::Config;
use rewrite::{Rewrite, RewriteContext};
use comment::rewrite_comment;
use macros::{rewrite_macro, MacroPosition};
use items::{rewrite_static, rewrite_associated_type, rewrite_type_alias, format_impl, format_trait};
use items::{rewrite_static, rewrite_associated_type, rewrite_associated_impl_type,
rewrite_type_alias, format_impl, format_trait};
fn is_use_item(item: &ast::Item) -> bool {
match item.node {
@ -411,11 +412,12 @@ impl<'a> FmtVisitor<'a> {
self.push_rewrite(ii.span, rewrite);
}
ast::ImplItemKind::Type(ref ty) => {
let rewrite = rewrite_associated_type(ii.ident,
Some(ty),
None,
&self.get_context(),
self.block_indent);
let rewrite = rewrite_associated_impl_type(ii.ident,
ii.defaultness,
Some(ty),
None,
&self.get_context(),
self.block_indent);
self.push_rewrite(ii.span, rewrite);
}
ast::ImplItemKind::Macro(ref mac) => {