Plumb awaitness of for loops
This commit is contained in:
@@ -1274,7 +1274,7 @@ impl Expr {
|
||||
ExprKind::Let(..) => ExprPrecedence::Let,
|
||||
ExprKind::If(..) => ExprPrecedence::If,
|
||||
ExprKind::While(..) => ExprPrecedence::While,
|
||||
ExprKind::ForLoop(..) => ExprPrecedence::ForLoop,
|
||||
ExprKind::ForLoop { .. } => ExprPrecedence::ForLoop,
|
||||
ExprKind::Loop(..) => ExprPrecedence::Loop,
|
||||
ExprKind::Match(..) => ExprPrecedence::Match,
|
||||
ExprKind::Closure(..) => ExprPrecedence::Closure,
|
||||
@@ -1436,10 +1436,10 @@ pub enum ExprKind {
|
||||
While(P<Expr>, P<Block>, Option<Label>),
|
||||
/// A `for` loop, with an optional label.
|
||||
///
|
||||
/// `'label: for pat in expr { block }`
|
||||
/// `'label: for await? pat in iter { block }`
|
||||
///
|
||||
/// This is desugared to a combination of `loop` and `match` expressions.
|
||||
ForLoop(P<Pat>, P<Expr>, P<Block>, Option<Label>),
|
||||
ForLoop { pat: P<Pat>, iter: P<Expr>, body: P<Block>, label: Option<Label>, kind: ForLoopKind },
|
||||
/// Conditionless loop (can be exited with `break`, `continue`, or `return`).
|
||||
///
|
||||
/// `'label: loop { block }`
|
||||
@@ -1542,6 +1542,13 @@ pub enum ExprKind {
|
||||
Err,
|
||||
}
|
||||
|
||||
/// Used to differentiate between `for` loops and `for await` loops.
|
||||
#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq, Eq)]
|
||||
pub enum ForLoopKind {
|
||||
For,
|
||||
ForAwait,
|
||||
}
|
||||
|
||||
/// Used to differentiate between `async {}` blocks and `gen {}` blocks.
|
||||
#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq)]
|
||||
pub enum GenBlockKind {
|
||||
|
||||
Reference in New Issue
Block a user