about summary refs log tree commit diff
path: root/compiler/rustc_passes/src
diff options
context:
space:
mode:
authorDeadbeef <ent3rm4n@gmail.com>2021-06-28 11:13:32 +0800
committerDeadbeef <ent3rm4n@gmail.com>2021-07-01 11:29:49 +0800
commit5e178b29b43adbd3313fbc70037cf7aba0c98a56 (patch)
tree9785dc027f65aef345383770f0b23794da07daec /compiler/rustc_passes/src
parent22a8d46ed36271ed3a3d73b7747ab3a300b5af10 (diff)
downloadrust-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.rs9
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