diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-01-12 07:12:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-12 07:12:06 +0100 |
| commit | 6726f1e013e77a24d8e697c40f85c30e7408dde8 (patch) | |
| tree | 51018f016b6f7e430ed044e6f5948ad0f28da2fb /compiler/rustc_const_eval/src/transform | |
| parent | 677f8f0f4fcc3183a5331bd792759e5f53cd10c2 (diff) | |
| parent | bf5130b502d3d1c61465c8deded65a1cb3929fbd (diff) | |
| download | rust-6726f1e013e77a24d8e697c40f85c30e7408dde8.tar.gz rust-6726f1e013e77a24d8e697c40f85c30e7408dde8.zip | |
Rollup merge of #92432 - fee1-dead:constck-impl-constness, r=oli-obk
Error when selected impl is not const in constck Catches bad things when checking a `default_method_body_is_const` body, such as: ```rust self.map(/* .. */).is_sorted(); ``` When `Map` does not yet have a `const` `impl` for `Iterator`. r? ```@oli-obk```
Diffstat (limited to 'compiler/rustc_const_eval/src/transform')
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/check_consts/check.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_const_eval/src/transform/check_consts/check.rs b/compiler/rustc_const_eval/src/transform/check_consts/check.rs index dd749c03934..de4824eb667 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/check.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/check.rs @@ -810,7 +810,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { param_env, Binder::dummy(TraitPredicate { trait_ref, - constness: ty::BoundConstness::ConstIfConst, + constness: ty::BoundConstness::NotConst, polarity: ty::ImplPolarity::Positive, }), ); @@ -829,6 +829,10 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> { return; } Ok(Some(ImplSource::UserDefined(data))) => { + if let hir::Constness::NotConst = tcx.impl_constness(data.impl_def_id) { + self.check_op(ops::FnCallNonConst(None)); + return; + } let callee_name = tcx.item_name(callee); if let Some(&did) = tcx .associated_item_def_ids(data.impl_def_id) |
