Reintroduce hir::ExprKind::If
This commit is contained in:
parent
c8915eebea
commit
f85fc264fe
97 changed files with 1046 additions and 787 deletions
|
@ -658,12 +658,12 @@ impl<'hir> Map<'hir> {
|
|||
CRATE_HIR_ID
|
||||
}
|
||||
|
||||
/// When on a match arm tail expression or on a match arm, give back the enclosing `match`
|
||||
/// expression.
|
||||
/// When on an if expression, a match arm tail expression or a match arm, give back
|
||||
/// the enclosing `if` or `match` expression.
|
||||
///
|
||||
/// Used by error reporting when there's a type error in a match arm caused by the `match`
|
||||
/// Used by error reporting when there's a type error in an if or match arm caused by the
|
||||
/// expression needing to be unit.
|
||||
pub fn get_match_if_cause(&self, hir_id: HirId) -> Option<&'hir Expr<'hir>> {
|
||||
pub fn get_if_cause(&self, hir_id: HirId) -> Option<&'hir Expr<'hir>> {
|
||||
for (_, node) in self.parent_iter(hir_id) {
|
||||
match node {
|
||||
Node::Item(_)
|
||||
|
@ -671,7 +671,9 @@ impl<'hir> Map<'hir> {
|
|||
| Node::TraitItem(_)
|
||||
| Node::ImplItem(_)
|
||||
| Node::Stmt(Stmt { kind: StmtKind::Local(_), .. }) => break,
|
||||
Node::Expr(expr @ Expr { kind: ExprKind::Match(..), .. }) => return Some(expr),
|
||||
Node::Expr(expr @ Expr { kind: ExprKind::If(..) | ExprKind::Match(..), .. }) => {
|
||||
return Some(expr);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue