1
Fork 0

Separate contract feature gates for the internal machinery

The extended syntax for function signature that includes contract clauses
should never be user exposed versus the interface we want to ship
externally eventually.
This commit is contained in:
Felix S. Klock II 2024-12-03 16:13:00 +00:00 committed by Celina G. Val
parent b279ff9dcf
commit 6a6c6b891b
20 changed files with 210 additions and 28 deletions

View file

@ -548,6 +548,8 @@ pub fn check_crate(krate: &ast::Crate, sess: &Session, features: &Features) {
gate_all!(pin_ergonomics, "pinned reference syntax is experimental");
gate_all!(unsafe_fields, "`unsafe` fields are experimental");
gate_all!(unsafe_binders, "unsafe binder types are experimental");
gate_all!(rustc_contracts, "contracts are experimental");
gate_all!(rustc_contracts_internals, "contract internal machinery is for internal use only");
if !visitor.features.never_patterns() {
if let Some(spans) = spans.get(&sym::never_patterns) {