Skip to content

Commit 335aa92

Browse files
committed
Stabilize #[cfg(version(...))]
1 parent 414482f commit 335aa92

File tree

5 files changed

+71
-18
lines changed

5 files changed

+71
-18
lines changed

compiler/rustc_feature/src/accepted.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ declare_features! (
107107
(accepted, cfg_target_feature, "1.27.0", Some(29717)),
108108
/// Allows `cfg(target_vendor = "...")`.
109109
(accepted, cfg_target_vendor, "1.33.0", Some(29718)),
110+
/// Allow conditional compilation depending on rust version
111+
(accepted, cfg_version, "CURRENT_RUSTC_VERSION", Some(64796)),
110112
/// Allows implementing `Clone` for closures where possible (RFC 2132).
111113
(accepted, clone_closures, "1.26.0", Some(44490)),
112114
/// 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
@@ -418,8 +418,6 @@ declare_features! (
418418
(unstable, cfg_target_thread_local, "1.7.0", Some(29594)),
419419
/// Allows the use of `#[cfg(ub_checks)` to check if UB checks are enabled.
420420
(unstable, cfg_ub_checks, "1.79.0", Some(123499)),
421-
/// Allow conditional compilation depending on rust version
422-
(unstable, cfg_version, "1.45.0", Some(64796)),
423421
/// Allows to use the `#[cfi_encoding = ""]` attribute.
424422
(unstable, cfi_encoding, "1.71.0", Some(89653)),
425423
/// Allows `for<...>` on closures and coroutines.
Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,35 @@
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
64
fn foo() -> bool { true }
75
#[cfg(version("1.44"))]
8-
//~^ ERROR `cfg(version)` is experimental and subject to change
96
fn foo() -> bool { true }
107
#[cfg(not(version("1.44")))]
11-
//~^ ERROR `cfg(version)` is experimental and subject to change
128
fn foo() -> bool { false }
139

1410
#[cfg(version("1.43", "1.44", "1.45"))] //~ ERROR: expected single version literal
15-
//~^ ERROR `cfg(version)` is experimental and subject to change
1611
fn bar() -> bool { false }
1712
#[cfg(version(false))] //~ ERROR: expected a version literal
18-
//~^ ERROR `cfg(version)` is experimental and subject to change
1913
fn bar() -> bool { false }
2014
#[cfg(version("foo"))] //~ WARNING: unknown version literal format
21-
//~^ ERROR `cfg(version)` is experimental and subject to change
2215
fn bar() -> bool { false }
2316
#[cfg(version("999"))] //~ WARNING: unknown version literal format
24-
//~^ ERROR `cfg(version)` is experimental and subject to change
2517
fn bar() -> bool { false }
2618
#[cfg(version("-1"))] //~ WARNING: unknown version literal format
27-
//~^ ERROR `cfg(version)` is experimental and subject to change
2819
fn bar() -> bool { false }
2920
#[cfg(version("65536"))] //~ WARNING: unknown version literal format
30-
//~^ ERROR `cfg(version)` is experimental and subject to change
3121
fn bar() -> bool { false }
3222
#[cfg(version("0"))] //~ WARNING: unknown version literal format
33-
//~^ ERROR `cfg(version)` is experimental and subject to change
3423
fn bar() -> bool { true }
3524
#[cfg(version("1.0"))]
36-
//~^ ERROR `cfg(version)` is experimental and subject to change
3725
fn bar() -> bool { true }
3826
#[cfg(version("1.65536.2"))] //~ WARNING: unknown version literal format
39-
//~^ ERROR `cfg(version)` is experimental and subject to change
4027
fn bar() -> bool { false }
4128
#[cfg(version("1.20.0-stable"))] //~ WARNING: unknown version literal format
42-
//~^ ERROR `cfg(version)` is experimental and subject to change
4329
fn bar() {}
4430

4531
fn main() {
4632
assert!(foo());
4733
assert!(bar());
48-
assert!(cfg!(version("1.42"))); //~ ERROR `cfg(version)` is experimental and subject to change
34+
assert!(cfg!(version("1.42")));
4935
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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:10: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:12: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:14: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:16: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:18: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:20: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:22: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:26: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:28:15
63+
|
64+
LL | #[cfg(version("1.20.0-stable"))]
65+
| ^^^^^^^^^^^^^^^
66+
67+
error: aborting due to 4 previous errors; 7 warnings emitted
68+

0 commit comments

Comments
 (0)