Rollup merge of #138632 - clubby789:stabilize-cfg-boolean-lit, r=davidtwco,Urgau,traviscross
Stabilize `cfg_boolean_literals` Closes #131204 `@rustbot` labels +T-lang +I-lang-nominated This will end up conflicting with the test in #138293 so whichever doesn't land first will need updating -- # Stabilization Report ## General design ### What is the RFC for this feature and what changes have occurred to the user-facing design since the RFC was finalized? [RFC 3695](https://github.com/rust-lang/rfcs/pull/3695), none. ### What behavior are we committing to that has been controversial? Summarize the major arguments pro/con. None ### Are there extensions to this feature that remain unstable? How do we know that we are not accidentally committing to those? None ## Has a call-for-testing period been conducted? If so, what feedback was received? Yes; only positive feedback was received. ## Implementation quality ### Summarize the major parts of the implementation and provide links into the code (or to PRs) Implemented in [#131034](https://github.com/rust-lang/rust/pull/131034). ### Summarize existing test coverage of this feature - [Basic usage, including `#[cfg()]`, `cfg!()` and `#[cfg_attr()]`](6d71251cf9/tests/ui/cfg/true-false.rs
) - [`--cfg=true/false` on the command line being accessible via `r#true/r#false`](6d71251cf9/tests/ui/cfg/raw-true-false.rs
) - [Interaction with the unstable `#[doc(cfg(..))]` feature](6d71251/tests/rustdoc-ui/cfg-boolean-literal.rs
) - [Denying `--check-cfg=cfg(true/false)`](6d71251/tests/ui/check-cfg/invalid-arguments.rs
) - Ensuring `--cfg false` on the command line doesn't change the meaning of `cfg(false)`: `tests/ui/cfg/cmdline-false.rs` - Ensuring both `cfg(true)` and `cfg(false)` on the same item result in it being disabled: `tests/ui/cfg/both-true-false.rs` ### What outstanding bugs in the issue tracker involve this feature? Are they stabilization-blocking? The above mentioned issue; it should not block as it interacts with another unstable feature. ### What FIXMEs are still in the code for that feature and why is it ok to leave them there? None ### Summarize contributors to the feature by name for recognition and assuredness that people involved in the feature agree with stabilization - `@clubby789` (RFC) - `@Urgau` (Implementation in rustc) ### Which tools need to be adjusted to support this feature. Has this work been done? `rustdoc`'s unstable`#[doc(cfg(..)]` has been updated to respect it. `cargo` has been updated with a forward compatibility lint to enable supporting it in cargo once stabilized. ## Type system and execution rules ### What updates are needed to the reference/specification? (link to PRs when they exist) A few lines to be added to the reference for configuration predicates, specified in the RFC.
This commit is contained in:
commit
0de803c38d
160 changed files with 537 additions and 633 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
fn syntax() {
|
||||
let _ = #[attr] [];
|
||||
let _ = #[attr] [0];
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
enum Foo { pub V, }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
//@ pp-exact
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
fn simple_attr() {
|
||||
|
||||
#[attr]
|
||||
|
@ -10,21 +10,21 @@ fn simple_attr() {
|
|||
if true {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
fn if_else_chain() {
|
||||
|
||||
#[first_attr]
|
||||
if true {} else if false {} else {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
fn if_let() {
|
||||
|
||||
#[attr]
|
||||
if let Some(_) = Some(true) {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
fn let_attr_if() {
|
||||
let _ = #[attr] if let _ = 0 {};
|
||||
let _ = #[attr] if true {};
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
extern "C" {
|
||||
static X: u8;
|
||||
type X;
|
||||
|
@ -14,7 +14,7 @@ extern "C" {
|
|||
pub fn foo();
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
trait T {
|
||||
const X: u8;
|
||||
type X;
|
||||
|
@ -30,7 +30,7 @@ trait T {
|
|||
pub default fn foo();
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
#[cfg(false)]
|
||||
impl T for S {
|
||||
const X: u8;
|
||||
type X;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue