diff options
| author | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2019-11-19 12:22:39 -0800 |
|---|---|---|
| committer | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2019-11-21 16:55:13 -0800 |
| commit | b09bb1569b23eaadcf22d7420f1ba9872c1088f7 (patch) | |
| tree | a4e1aa529d6db918abee047be915c909ae95f77e | |
| parent | 25122d09ebd27b39830e662a9e7ef3ccfd68dd95 (diff) | |
Allow `Downcast` projections in `qualify_min_const_fn`
| -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() { |
