From: Dylan MacKenzie Date: Tue, 19 Nov 2019 20:22:39 +0000 (-0800) Subject: Allow `Downcast` projections in `qualify_min_const_fn` X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=b09bb1569b23eaadcf22d7420f1ba9872c1088f7;p=rust.git Allow `Downcast` projections in `qualify_min_const_fn` --- 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() {