Skip to content

Commit 9592d2e

Browse files
committed
Stabilize #[cfg(version(...))]
1 parent 444a627 commit 9592d2e

File tree

9 files changed

+84
-275
lines changed

9 files changed

+84
-275
lines changed

compiler/rustc_feature/src/accepted.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ declare_features! (
109109
(accepted, cfg_target_feature, "1.27.0", Some(29717)),
110110
/// Allows `cfg(target_vendor = "...")`.
111111
(accepted, cfg_target_vendor, "1.33.0", Some(29718)),
112+
/// Allow conditional compilation depending on rust version
113+
(accepted, cfg_version, "CURRENT_RUSTC_VERSION", Some(64796)),
112114
/// Allows implementing `Clone` for closures where possible (RFC 2132).
113115
(accepted, clone_closures, "1.26.0", Some(44490)),
114116
/// Allows coercing non capturing closures to function pointers.

compiler/rustc_feature/src/builtin_attrs.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ const GATED_CFGS: &[GatedCfg] = &[
3333
Features::cfg_target_has_atomic,
3434
),
3535
(sym::sanitize, sym::cfg_sanitize, Features::cfg_sanitize),
36-
(sym::version, sym::cfg_version, Features::cfg_version),
3736
(sym::relocation_model, sym::cfg_relocation_model, Features::cfg_relocation_model),
3837
(sym::sanitizer_cfi_generalize_pointers, sym::cfg_sanitizer_cfi, Features::cfg_sanitizer_cfi),
3938
(sym::sanitizer_cfi_normalize_integers, sym::cfg_sanitizer_cfi, Features::cfg_sanitizer_cfi),

compiler/rustc_feature/src/unstable.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,6 @@ declare_features! (
417417
(unstable, cfg_target_thread_local, "1.7.0", Some(29594)),
418418
/// Allows the use of `#[cfg(ub_checks)` to check if UB checks are enabled.
419419
(unstable, cfg_ub_checks, "1.79.0", Some(123499)),
420-
/// Allow conditional compilation depending on rust version
421-
(unstable, cfg_version, "1.45.0", Some(64796)),
422420
/// Allows to use the `#[cfi_encoding = ""]` attribute.
423421
(unstable, cfi_encoding, "1.71.0", Some(89653)),
424422
/// Allows `for<...>` on closures and coroutines.

compiler/rustc_trait_selection/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#![feature(assert_matches)]
2020
#![feature(associated_type_defaults)]
2121
#![feature(box_patterns)]
22-
#![feature(cfg_version)]
2322
#![feature(if_let_guard)]
2423
#![feature(iter_intersperse)]
2524
#![feature(iterator_try_reduce)]

src/doc/unstable-book/src/language-features/cfg-version.md

Lines changed: 0 additions & 35 deletions
This file was deleted.

tests/ui/cfg/assume-incomplete-release/assume-incomplete.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
//@ revisions: assume no_assume
44
//@ [assume]compile-flags: -Z assume-incomplete-release
55

6-
#![feature(cfg_version)]
7-
86
extern crate ver_cfg_rel;
97

108
use ver_cfg_rel::ver_cfg_rel;
Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,37 @@
11
#[cfg(version(42))] //~ ERROR: expected a version literal
2-
//~^ ERROR `cfg(version)` is experimental and subject to change
32
fn foo() {}
43
#[cfg(version(1.20))] //~ ERROR: expected a version literal
5-
//~^ ERROR `cfg(version)` is experimental and subject to change
4+
fn foo() -> bool { true }
5+
#[cfg(version = "1.20")] //~ WARN: unexpected `cfg` condition name: `version`
66
fn foo() -> bool { true }
77
#[cfg(version("1.44"))]
8-
//~^ ERROR `cfg(version)` is experimental and subject to change
98
fn foo() -> bool { true }
109
#[cfg(not(version("1.44")))]
11-
//~^ ERROR `cfg(version)` is experimental and subject to change
1210
fn foo() -> bool { false }
1311

1412
#[cfg(version("1.43", "1.44", "1.45"))] //~ ERROR: expected single version literal
15-
//~^ ERROR `cfg(version)` is experimental and subject to change
1613
fn bar() -> bool { false }
1714
#[cfg(version(false))] //~ ERROR: expected a version literal
18-
//~^ ERROR `cfg(version)` is experimental and subject to change
1915
fn bar() -> bool { false }
2016
#[cfg(version("foo"))] //~ WARNING: unknown version literal format
21-
//~^ ERROR `cfg(version)` is experimental and subject to change
2217
fn bar() -> bool { false }
2318
#[cfg(version("999"))] //~ WARNING: unknown version literal format
24-
//~^ ERROR `cfg(version)` is experimental and subject to change
2519
fn bar() -> bool { false }
2620
#[cfg(version("-1"))] //~ WARNING: unknown version literal format
27-
//~^ ERROR `cfg(version)` is experimental and subject to change
2821
fn bar() -> bool { false }
2922
#[cfg(version("65536"))] //~ WARNING: unknown version literal format
30-
//~^ ERROR `cfg(version)` is experimental and subject to change
3123
fn bar() -> bool { false }
3224
#[cfg(version("0"))] //~ WARNING: unknown version literal format
33-
//~^ ERROR `cfg(version)` is experimental and subject to change
3425
fn bar() -> bool { true }
3526
#[cfg(version("1.0"))]
36-
//~^ ERROR `cfg(version)` is experimental and subject to change
3727
fn bar() -> bool { true }
3828
#[cfg(version("1.65536.2"))] //~ WARNING: unknown version literal format
39-
//~^ ERROR `cfg(version)` is experimental and subject to change
4029
fn bar() -> bool { false }
4130
#[cfg(version("1.20.0-stable"))] //~ WARNING: unknown version literal format
42-
//~^ ERROR `cfg(version)` is experimental and subject to change
4331
fn bar() {}
4432

4533
fn main() {
4634
assert!(foo());
4735
assert!(bar());
48-
assert!(cfg!(version("1.42"))); //~ ERROR `cfg(version)` is experimental and subject to change
36+
assert!(cfg!(version("1.42")));
4937
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
error: expected a version literal
2+
--> $DIR/cfg-version.rs:1:15
3+
|
4+
LL | #[cfg(version(42))]
5+
| ^^
6+
7+
error: expected a version literal
8+
--> $DIR/cfg-version.rs:3:15
9+
|
10+
LL | #[cfg(version(1.20))]
11+
| ^^^^
12+
13+
error: expected single version literal
14+
--> $DIR/cfg-version.rs:12:7
15+
|
16+
LL | #[cfg(version("1.43", "1.44", "1.45"))]
17+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
18+
19+
error: expected a version literal
20+
--> $DIR/cfg-version.rs:14:15
21+
|
22+
LL | #[cfg(version(false))]
23+
| ^^^^^
24+
25+
warning: unknown version literal format, assuming it refers to a future version
26+
--> $DIR/cfg-version.rs:16:15
27+
|
28+
LL | #[cfg(version("foo"))]
29+
| ^^^^^
30+
31+
warning: unknown version literal format, assuming it refers to a future version
32+
--> $DIR/cfg-version.rs:18:15
33+
|
34+
LL | #[cfg(version("999"))]
35+
| ^^^^^
36+
37+
warning: unknown version literal format, assuming it refers to a future version
38+
--> $DIR/cfg-version.rs:20:15
39+
|
40+
LL | #[cfg(version("-1"))]
41+
| ^^^^
42+
43+
warning: unknown version literal format, assuming it refers to a future version
44+
--> $DIR/cfg-version.rs:22:15
45+
|
46+
LL | #[cfg(version("65536"))]
47+
| ^^^^^^^
48+
49+
warning: unknown version literal format, assuming it refers to a future version
50+
--> $DIR/cfg-version.rs:24:15
51+
|
52+
LL | #[cfg(version("0"))]
53+
| ^^^
54+
55+
warning: unknown version literal format, assuming it refers to a future version
56+
--> $DIR/cfg-version.rs:28:15
57+
|
58+
LL | #[cfg(version("1.65536.2"))]
59+
| ^^^^^^^^^^^
60+
61+
warning: unknown version literal format, assuming it refers to a future version
62+
--> $DIR/cfg-version.rs:30:15
63+
|
64+
LL | #[cfg(version("1.20.0-stable"))]
65+
| ^^^^^^^^^^^^^^^
66+
67+
warning: unexpected `cfg` condition name: `version`
68+
--> $DIR/cfg-version.rs:5:7
69+
|
70+
LL | #[cfg(version = "1.20")]
71+
| ^^^^^^^^^^^^^^^^
72+
|
73+
= help: expected names are: `FALSE` and `test` and 31 more
74+
= help: to expect this configuration use `--check-cfg=cfg(version, values("1.20"))`
75+
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
76+
= note: `#[warn(unexpected_cfgs)]` on by default
77+
78+
error: aborting due to 4 previous errors; 8 warnings emitted
79+

0 commit comments

Comments
 (0)