From cf844b547dbec1f23982fca8e07ec65800ed5d6d Mon Sep 17 00:00:00 2001 From: Taylor Cramer Date: Wed, 6 Jun 2018 15:50:59 -0700 Subject: async await desugaring and tests --- src/libsyntax/ast.rs | 24 ++++++++++++++++-- src/libsyntax/ext/build.rs | 2 ++ src/libsyntax/feature_gate.rs | 12 ++++++--- src/libsyntax/fold.rs | 25 +++++++++++++++++-- src/libsyntax/parse/parser.rs | 58 ++++++++++++++++++++++++++++++++++++++++--- src/libsyntax/print/pprust.rs | 24 +++++++++++++----- src/libsyntax/ptr.rs | 10 ++++++++ src/libsyntax/test.rs | 12 ++++++--- src/libsyntax/util/parser.rs | 2 ++ src/libsyntax/visit.rs | 7 ++++-- 10 files changed, 154 insertions(+), 22 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 55c21c64c83..a57a9b95e5f 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -987,6 +987,7 @@ impl Expr { ExprKind::Closure(..) => ExprPrecedence::Closure, ExprKind::Block(..) => ExprPrecedence::Block, ExprKind::Catch(..) => ExprPrecedence::Catch, + ExprKind::Async(..) => ExprPrecedence::Async, ExprKind::Assign(..) => ExprPrecedence::Assign, ExprKind::AssignOp(..) => ExprPrecedence::AssignOp, ExprKind::Field(..) => ExprPrecedence::Field, @@ -1094,9 +1095,18 @@ pub enum ExprKind { /// A closure (for example, `move |a, b, c| a + b + c`) /// /// The final span is the span of the argument block `|...|` - Closure(CaptureBy, Movability, P, P, Span), + Closure(CaptureBy, IsAsync, Movability, P, P, Span), /// A block (`'label: { ... }`) Block(P, Option