From 3576088d7914182bf75ef3de9df791a8a70c09a8 Mon Sep 17 00:00:00 2001 From: Ayaz Hafiz Date: Mon, 29 Jun 2020 19:36:31 -0700 Subject: [PATCH] Properly format function signature in extern blocks Closes #4288 And we get to drop a method, which I think is a win :) --- src/formatting/items.rs | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/formatting/items.rs b/src/formatting/items.rs index b79faf3a555..a37380fc6bc 100644 --- a/src/formatting/items.rs +++ b/src/formatting/items.rs @@ -185,6 +185,7 @@ impl Rewrite for ast::Local { // FIXME convert to using rewrite style rather than visitor // FIXME format modules in this style #[allow(dead_code)] +#[derive(Debug)] struct Item<'a> { keyword: &'static str, abi: Cow<'static, str>, @@ -213,6 +214,7 @@ impl<'a> Item<'a> { } } +#[derive(Debug)] enum BodyElement<'a> { // Stmt(&'a ast::Stmt), // Field(&'a ast::Field), @@ -234,26 +236,10 @@ pub(crate) struct FnSig<'a> { } impl<'a> FnSig<'a> { - pub(crate) fn new( - decl: &'a ast::FnDecl, - generics: &'a ast::Generics, - vis: ast::Visibility, - ) -> FnSig<'a> { - FnSig { - decl, - generics, - ext: ast::Extern::None, - is_async: Cow::Owned(ast::Async::No), - constness: ast::Const::No, - defaultness: ast::Defaultness::Final, - unsafety: ast::Unsafe::No, - visibility: vis, - } - } - pub(crate) fn from_method_sig( method_sig: &'a ast::FnSig, generics: &'a ast::Generics, + visibility: ast::Visibility, ) -> FnSig<'a> { FnSig { unsafety: method_sig.header.unsafety, @@ -263,7 +249,7 @@ impl<'a> FnSig<'a> { ext: method_sig.header.ext, decl: &*method_sig.decl, generics, - visibility: DEFAULT_VISIBILITY, + visibility, } } @@ -276,9 +262,8 @@ impl<'a> FnSig<'a> { match *fn_kind { visit::FnKind::Fn(fn_ctxt, _, fn_sig, vis, _) => match fn_ctxt { visit::FnCtxt::Assoc(..) => { - let mut fn_sig = FnSig::from_method_sig(fn_sig, generics); + let mut fn_sig = FnSig::from_method_sig(fn_sig, generics, vis.clone()); fn_sig.defaultness = defaultness; - fn_sig.visibility = vis.clone(); fn_sig } _ => FnSig { @@ -409,7 +394,7 @@ impl<'a> FmtVisitor<'a> { &context, indent, ident, - &FnSig::from_method_sig(sig, generics), + &FnSig::from_method_sig(sig, generics, DEFAULT_VISIBILITY), span, FnBraceStyle::None, )?; @@ -3137,7 +3122,7 @@ impl Rewrite for ast::ForeignItem { context, shape.indent, self.ident, - &FnSig::new(&fn_sig.decl, generics, self.vis.clone()), + &FnSig::from_method_sig(&fn_sig, generics, self.vis.clone()), span, FnBraceStyle::None, )