Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/hir.rs')
-rw-r--r--crates/hir-def/src/hir.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/crates/hir-def/src/hir.rs b/crates/hir-def/src/hir.rs
index ac44d37941..34b2910b4f 100644
--- a/crates/hir-def/src/hir.rs
+++ b/crates/hir-def/src/hir.rs
@@ -182,6 +182,7 @@ pub enum Expr {
tail: Option<ExprId>,
},
Const(ConstBlockId),
+ // FIXME: Fold this into Block with an unsafe flag?
Unsafe {
id: Option<BlockId>,
statements: Box<[Statement]>,
@@ -216,6 +217,9 @@ pub enum Expr {
Return {
expr: Option<ExprId>,
},
+ Become {
+ expr: ExprId,
+ },
Yield {
expr: Option<ExprId>,
},
@@ -349,6 +353,9 @@ pub enum Statement {
expr: ExprId,
has_semi: bool,
},
+ // At the moment, we only use this to figure out if a return expression
+ // is really the last statement of a block. See #16566
+ Item,
}
impl Expr {
@@ -382,6 +389,7 @@ impl Expr {
}
}
Statement::Expr { expr: expression, .. } => f(*expression),
+ Statement::Item => (),
}
}
if let &Some(expr) = tail {
@@ -410,6 +418,7 @@ impl Expr {
f(expr);
}
}
+ Expr::Become { expr } => f(*expr),
Expr::RecordLit { fields, spread, .. } => {
for field in fields.iter() {
f(field.expr);