diff options
| author | Deadbeef <ent3rm4n@gmail.com> | 2021-06-28 11:13:32 +0800 |
|---|---|---|
| committer | Deadbeef <ent3rm4n@gmail.com> | 2021-07-01 11:29:49 +0800 |
| commit | 5e178b29b43adbd3313fbc70037cf7aba0c98a56 (patch) | |
| tree | 9785dc027f65aef345383770f0b23794da07daec /compiler/rustc_passes/src | |
| parent | 22a8d46ed36271ed3a3d73b7747ab3a300b5af10 (diff) | |
| download | rust-5e178b29b43adbd3313fbc70037cf7aba0c98a56.tar.gz rust-5e178b29b43adbd3313fbc70037cf7aba0c98a56.zip | |
Do the check even when the feature is not enabled
Diffstat (limited to 'compiler/rustc_passes/src')
| -rw-r--r-- | compiler/rustc_passes/src/check_const.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/rustc_passes/src/check_const.rs b/compiler/rustc_passes/src/check_const.rs index d62f3d5e6d6..d783852aaca 100644 --- a/compiler/rustc_passes/src/check_const.rs +++ b/compiler/rustc_passes/src/check_const.rs @@ -60,9 +60,7 @@ impl NonConstExpr { fn check_mod_const_bodies(tcx: TyCtxt<'_>, module_def_id: LocalDefId) { let mut vis = CheckConstVisitor::new(tcx); tcx.hir().visit_item_likes_in_module(module_def_id, &mut vis.as_deep_visitor()); - if tcx.features().enabled(sym::const_trait_impl) { - tcx.hir().visit_item_likes_in_module(module_def_id, &mut CheckConstTraitVisitor::new(tcx)); - } + tcx.hir().visit_item_likes_in_module(module_def_id, &mut CheckConstTraitVisitor::new(tcx)); } pub(crate) fn provide(providers: &mut Providers) { @@ -80,6 +78,8 @@ impl<'tcx> CheckConstTraitVisitor<'tcx> { } impl<'tcx> hir::itemlikevisit::ItemLikeVisitor<'tcx> for CheckConstTraitVisitor<'tcx> { + /// check for const trait impls, and errors if the impl uses provided/default functions + /// of the trait being implemented; as those provided functions can be non-const. fn visit_item(&mut self, item: &'hir hir::Item<'hir>) { let _: Option<_> = try { if let hir::ItemKind::Impl(ref imp) = item.kind { @@ -103,6 +103,9 @@ impl<'tcx> hir::itemlikevisit::ItemLikeVisitor<'tcx> for CheckConstTraitVisitor< .filter(|it| matches!(it.kind, hir::AssocItemKind::Fn { .. })) .count(); + // number of trait functions unequal to functions in impl, + // meaning that one or more provided/default functions of the + // trait are used. if trait_fn_cnt != impl_fn_cnt { self.tcx .sess |
