From b09bb1569b23eaadcf22d7420f1ba9872c1088f7 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Tue, 19 Nov 2019 12:22:39 -0800 Subject: [PATCH] Allow `Downcast` projections in `qualify_min_const_fn` --- src/librustc_mir/transform/qualify_min_const_fn.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/librustc_mir/transform/qualify_min_const_fn.rs b/src/librustc_mir/transform/qualify_min_const_fn.rs index c5fa9df528c..2bc44d2e5c1 100644 --- a/src/librustc_mir/transform/qualify_min_const_fn.rs +++ b/src/librustc_mir/transform/qualify_min_const_fn.rs @@ -266,9 +266,10 @@ fn check_place( while let &[ref proj_base @ .., elem] = cursor { cursor = proj_base; match elem { - ProjectionElem::Downcast(..) => { - return Err((span, "`match` or `if let` in `const fn` is unstable".into())); - } + ProjectionElem::Downcast(..) if !tcx.features().const_if_match + => return Err((span, "`match` or `if let` in `const fn` is unstable".into())), + ProjectionElem::Downcast(_symbol, _variant_index) => {} + ProjectionElem::Field(..) => { let base_ty = Place::ty_from(&place.base, &proj_base, body, tcx).ty; if let Some(def) = base_ty.ty_adt_def() { -- 2.44.0