about summary refs log tree commit diff
path: root/compiler/rustc_hir/src
diff options
context:
space:
mode:
authorCelina G. Val <celinval@amazon.com>2025-02-25 13:24:07 -0800
committerCelina G. Val <celinval@amazon.com>2025-04-07 11:17:33 -0700
commitb9754f9e7bfe2d8eed780962b550a25a87118ce4 (patch)
tree1d8ef4bffc26b6918e8698db3bcfbebfb9f03d7f /compiler/rustc_hir/src
parent5337252b9952fdd9482ed6a4add17254e5bd2c40 (diff)
downloadrust-b9754f9e7bfe2d8eed780962b550a25a87118ce4.tar.gz
rust-b9754f9e7bfe2d8eed780962b550a25a87118ce4.zip
Enable contracts for const functions
Use `const_eval_select!()` macro to enable contract checking only at
runtime. The existing contract logic relies on closures,
which are not supported in constant functions.

This commit also removes one level of indirection for ensures clauses,
however, it currently has a spurious warning message when the bottom
of the function is unreachable.
Diffstat (limited to 'compiler/rustc_hir/src')
-rw-r--r--compiler/rustc_hir/src/lang_items.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/rustc_hir/src/lang_items.rs b/compiler/rustc_hir/src/lang_items.rs
index 90fab01ba2d..fd15d054317 100644
--- a/compiler/rustc_hir/src/lang_items.rs
+++ b/compiler/rustc_hir/src/lang_items.rs
@@ -439,6 +439,8 @@ language_item_table! {
     DefaultTrait3,           sym::default_trait3,      default_trait3_trait,       Target::Trait,          GenericRequirement::None;
     DefaultTrait2,           sym::default_trait2,      default_trait2_trait,       Target::Trait,          GenericRequirement::None;
     DefaultTrait1,           sym::default_trait1,      default_trait1_trait,       Target::Trait,          GenericRequirement::None;
+
+    ContractCheckEnsures,     sym::contract_check_ensures,      contract_check_ensures_fn,      Target::Fn, GenericRequirement::None;
 }
 
 /// The requirement imposed on the generics of a lang item