diff options
| author | LeSeulArtichaut <leseulartichaut@gmail.com> | 2020-11-11 16:14:45 +0100 |
|---|---|---|
| committer | LeSeulArtichaut <leseulartichaut@gmail.com> | 2020-12-06 11:48:08 +0100 |
| commit | bab20800f0e7e6252c5c0da0a7a1ba123785cbca (patch) | |
| tree | 4999c759fddc0d1fce7ec5779cae1c0bdfc245f3 | |
| parent | cfaaa21e2a8d0871be0e1e0120ead44e7c8c3625 (diff) | |
| download | rust-bab20800f0e7e6252c5c0da0a7a1ba123785cbca.tar.gz rust-bab20800f0e7e6252c5c0da0a7a1ba123785cbca.zip | |
Introduce if-let guards in the THIR
| -rw-r--r-- | compiler/rustc_mir_build/src/thir/cx/expr.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_mir_build/src/thir/mod.rs | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/compiler/rustc_mir_build/src/thir/cx/expr.rs b/compiler/rustc_mir_build/src/thir/cx/expr.rs index e404afeb698..310673f5efc 100644 --- a/compiler/rustc_mir_build/src/thir/cx/expr.rs +++ b/compiler/rustc_mir_build/src/thir/cx/expr.rs @@ -776,10 +776,10 @@ impl ToBorrowKind for hir::Mutability { fn convert_arm<'tcx>(cx: &mut Cx<'_, 'tcx>, arm: &'tcx hir::Arm<'tcx>) -> Arm<'tcx> { Arm { pattern: cx.pattern_from_hir(&arm.pat), - guard: match arm.guard { - Some(hir::Guard::If(ref e)) => Some(Guard::If(e.to_ref())), - _ => None, - }, + guard: arm.guard.as_ref().map(|g| match g { + hir::Guard::If(ref e) => Guard::If(e.to_ref()), + hir::Guard::IfLet(ref pat, ref e) => Guard::IfLet(cx.pattern_from_hir(pat), e.to_ref()) + }), body: arm.body.to_ref(), lint_level: LintLevel::Explicit(arm.hir_id), scope: region::Scope { id: arm.hir_id.local_id, data: region::ScopeData::Node }, diff --git a/compiler/rustc_mir_build/src/thir/mod.rs b/compiler/rustc_mir_build/src/thir/mod.rs index 1a901746d50..ace9cad4d29 100644 --- a/compiler/rustc_mir_build/src/thir/mod.rs +++ b/compiler/rustc_mir_build/src/thir/mod.rs @@ -344,6 +344,7 @@ crate struct Arm<'tcx> { #[derive(Clone, Debug)] crate enum Guard<'tcx> { If(ExprRef<'tcx>), + IfLet(Pat<'tcx>, ExprRef<'tcx>), } #[derive(Copy, Clone, Debug)] |
