Format Async block and async fn
This commit is contained in:
parent
69ad879d52
commit
0b25f602fd
4 changed files with 34 additions and 3 deletions
23
src/expr.rs
23
src/expr.rs
|
@ -345,8 +345,27 @@ pub fn format_expr(
|
|||
}
|
||||
// FIXME(#2743)
|
||||
ast::ExprKind::ObsoleteInPlace(..) => unimplemented!(),
|
||||
// FIXME(topecongiro) Format async block.
|
||||
ast::ExprKind::Async(..) => None,
|
||||
ast::ExprKind::Async(_capture_by, _node_id, ref block) => {
|
||||
if let rw @ Some(_) =
|
||||
rewrite_single_line_block(context, "async ", block, Some(&expr.attrs), None, shape)
|
||||
{
|
||||
rw
|
||||
} else {
|
||||
// 6 = `async `
|
||||
let budget = shape.width.saturating_sub(6);
|
||||
Some(format!(
|
||||
"{}{}",
|
||||
"async ",
|
||||
rewrite_block(
|
||||
block,
|
||||
Some(&expr.attrs),
|
||||
None,
|
||||
context,
|
||||
Shape::legacy(budget, shape.indent)
|
||||
)?
|
||||
))
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
expr_rw
|
||||
|
|
|
@ -164,6 +164,7 @@ pub struct FnSig<'a> {
|
|||
decl: &'a ast::FnDecl,
|
||||
generics: &'a ast::Generics,
|
||||
abi: abi::Abi,
|
||||
asyncness: ast::IsAsync,
|
||||
constness: ast::Constness,
|
||||
defaultness: ast::Defaultness,
|
||||
unsafety: ast::Unsafety,
|
||||
|
@ -180,6 +181,7 @@ impl<'a> FnSig<'a> {
|
|||
decl,
|
||||
generics,
|
||||
abi: abi::Abi::Rust,
|
||||
asyncness: ast::IsAsync::NotAsync,
|
||||
constness: ast::Constness::NotConst,
|
||||
defaultness: ast::Defaultness::Final,
|
||||
unsafety: ast::Unsafety::Normal,
|
||||
|
@ -193,6 +195,7 @@ impl<'a> FnSig<'a> {
|
|||
) -> FnSig<'a> {
|
||||
FnSig {
|
||||
unsafety: method_sig.header.unsafety,
|
||||
asyncness: method_sig.header.asyncness,
|
||||
constness: method_sig.header.constness.node,
|
||||
defaultness: ast::Defaultness::Final,
|
||||
abi: method_sig.header.abi,
|
||||
|
@ -214,6 +217,7 @@ impl<'a> FnSig<'a> {
|
|||
generics,
|
||||
abi: fn_header.abi,
|
||||
constness: fn_header.constness.node,
|
||||
asyncness: fn_header.asyncness,
|
||||
defaultness,
|
||||
unsafety: fn_header.unsafety,
|
||||
visibility: visibility.clone(),
|
||||
|
@ -235,6 +239,7 @@ impl<'a> FnSig<'a> {
|
|||
// Vis defaultness constness unsafety abi.
|
||||
result.push_str(&*format_visibility(context, &self.visibility));
|
||||
result.push_str(format_defaultness(self.defaultness));
|
||||
result.push_str(format_asyncness(self.asyncness));
|
||||
result.push_str(format_constness(self.constness));
|
||||
result.push_str(format_unsafety(self.unsafety));
|
||||
result.push_str(&format_abi(
|
||||
|
|
|
@ -81,6 +81,14 @@ pub fn format_visibility(context: &RewriteContext, vis: &Visibility) -> Cow<'sta
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn format_asyncness(asyncness: ast::IsAsync) -> &'static str {
|
||||
match asyncness {
|
||||
ast::IsAsync::Async { .. } => "async ",
|
||||
ast::IsAsync::NotAsync => "",
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn format_constness(constness: ast::Constness) -> &'static str {
|
||||
match constness {
|
||||
|
|
|
@ -253,7 +253,6 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
|
|||
|
||||
// Note that this only gets called for function definitions. Required methods
|
||||
// on traits do not get handled here.
|
||||
// FIXME(topecongiro) Format async fn (#2812).
|
||||
fn visit_fn(
|
||||
&mut self,
|
||||
fk: visit::FnKind,
|
||||
|
|
Loading…
Reference in a new issue