diff options
| -rw-r--r-- | src/librustc_mir/transform/qualify_min_const_fn.rs | 7 |
1 files 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() { |
