]> git.lizzy.rs Git - rust.git/commit
Implement `#[rustc_default_body_unstable]`
authorMaybe Waffle <waffle.lapkin@gmail.com>
Wed, 27 Apr 2022 14:14:19 +0000 (18:14 +0400)
committerMaybe Waffle <waffle.lapkin@gmail.com>
Tue, 26 Jul 2022 11:38:03 +0000 (15:38 +0400)
commit177af4710464d9f743d64f8792afcb0ee553ba6b
tree75ef30b1f4c836275fbdc0e4ad745e897e670ab6
parent96b9bb4620f4d48aa25c381c7ea77e0cab48ac5b
Implement `#[rustc_default_body_unstable]`

This attribute allows to mark default body of a trait function as
unstable. This means that implementing the trait without implementing
the function will require enabling unstable feature.

This is useful in conjunction with `#[rustc_must_implement_one_of]`,
we may want to relax requirements for a trait, for example allowing
implementing either of `PartialEq::{eq, ne}`, but do so in a safe way
-- making implementation of only `PartialEq::ne` unstable.
14 files changed:
compiler/rustc_ast_passes/src/feature_gate.rs
compiler/rustc_attr/src/builtin.rs
compiler/rustc_expand/src/base.rs
compiler/rustc_feature/src/builtin_attrs.rs
compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
compiler/rustc_metadata/src/rmeta/encoder.rs
compiler/rustc_metadata/src/rmeta/mod.rs
compiler/rustc_middle/src/middle/stability.rs
compiler/rustc_middle/src/query/mod.rs
compiler/rustc_middle/src/ty/parameterized.rs
compiler/rustc_passes/src/stability.rs
compiler/rustc_span/src/symbol.rs
compiler/rustc_typeck/src/check/check.rs
compiler/rustc_typeck/src/check/mod.rs