Skip to content

Commit d4e26fb

Browse files
committed
compiletest: add enable-by-default check-cfg
1 parent 5173741 commit d4e26fb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+114
-63
lines changed

src/tools/compiletest/src/runtest.rs

+22-3
Original file line numberDiff line numberDiff line change
@@ -1028,12 +1028,31 @@ impl<'test> TestCx<'test> {
10281028
}
10291029

10301030
fn set_revision_flags(&self, cmd: &mut Command) {
1031+
// Normalize revisions to be lowercase and replace `-`s with `_`s.
1032+
// Otherwise the `--cfg` flag is not valid.
1033+
let normalize_revision = |revision: &str| revision.to_lowercase().replace("-", "_");
1034+
10311035
if let Some(revision) = self.revision {
1032-
// Normalize revisions to be lowercase and replace `-`s with `_`s.
1033-
// Otherwise the `--cfg` flag is not valid.
1034-
let normalized_revision = revision.to_lowercase().replace("-", "_");
1036+
let normalized_revision = normalize_revision(revision);
10351037
cmd.args(&["--cfg", &normalized_revision]);
10361038
}
1039+
1040+
if !self.props.no_auto_check_cfg {
1041+
let mut check_cfg = String::with_capacity(25);
1042+
1043+
// Generate `cfg(FALSE, REV1, ..., REVN)` (for all possible revisions)
1044+
//
1045+
// For compatibility reason we consider the `FALSE` cfg to be expected
1046+
// since it is extensively used in the testsuite.
1047+
check_cfg.push_str("cfg(FALSE");
1048+
for revision in &self.props.revisions {
1049+
check_cfg.push_str(",");
1050+
check_cfg.push_str(&normalize_revision(&revision));
1051+
}
1052+
check_cfg.push_str(")");
1053+
1054+
cmd.args(&["--check-cfg", &check_cfg]);
1055+
}
10371056
}
10381057

10391058
fn typecheck_source(&self, src: String) -> ProcRes {
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Check to see if we can get parameters from an @argsfile file
22
//
33
//@ check-pass
4-
//@ compile-flags: --cfg cmdline_set @{{src-base}}/argfile/commandline-argfile.args
4+
//@ compile-flags: --cfg cmdline_set --check-cfg=cfg(cmdline_set,unbroken)
5+
//@ compile-flags: @{{src-base}}/argfile/commandline-argfile.args
56

67
#[cfg(not(cmdline_set))]
78
compile_error!("cmdline_set not set");
89

910
#[cfg(not(unbroken))]
1011
compile_error!("unbroken not set");
1112

12-
fn main() {
13-
}
13+
fn main() {}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Check to see if we can get parameters from an @argsfile file
22
//
33
//@ build-pass
4-
//@ compile-flags: --cfg cmdline_set @{{src-base}}/argfile/commandline-argfile.args
4+
//@ compile-flags: --cfg cmdline_set --check-cfg=cfg(cmdline_set,unbroken)
5+
//@ compile-flags: @{{src-base}}/argfile/commandline-argfile.args
56

67
#[cfg(not(cmdline_set))]
78
compile_error!("cmdline_set not set");
89

910
#[cfg(not(unbroken))]
1011
compile_error!("unbroken not set");
1112

12-
fn main() {
13-
}
13+
fn main() {}

tests/ui/cfg/cfg-in-crate-1.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//@ run-pass
2-
//@ compile-flags: --cfg bar -D warnings
2+
//@ compile-flags: --cfg bar --check-cfg=cfg(bar) -D warnings
3+
34
#![cfg(bar)]
45

56
fn main() {}

tests/ui/cfg/cfg-macros-foo.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@ run-pass
2-
//@ compile-flags: --cfg foo
2+
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)
33

44
// check that cfg correctly chooses between the macro impls (see also
55
// cfg-macros-notfoo.rs)

tests/ui/cfg/cfg-path-error.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
//@ check-fail
22

3+
#![allow(unexpected_cfgs)] // invalid cfgs
4+
35
#[cfg(any(foo, foo::bar))]
46
//~^ERROR `cfg` predicate key must be an identifier
57
fn foo1() {}

tests/ui/cfg/cfg-path-error.stderr

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
error: `cfg` predicate key must be an identifier
2-
--> $DIR/cfg-path-error.rs:3:16
2+
--> $DIR/cfg-path-error.rs:5:16
33
|
44
LL | #[cfg(any(foo, foo::bar))]
55
| ^^^^^^^^
66

77
error: `cfg` predicate key must be an identifier
8-
--> $DIR/cfg-path-error.rs:7:11
8+
--> $DIR/cfg-path-error.rs:9:11
99
|
1010
LL | #[cfg(any(foo::bar, foo))]
1111
| ^^^^^^^^
1212

1313
error: `cfg` predicate key must be an identifier
14-
--> $DIR/cfg-path-error.rs:11:16
14+
--> $DIR/cfg-path-error.rs:13:16
1515
|
1616
LL | #[cfg(all(foo, foo::bar))]
1717
| ^^^^^^^^
1818

1919
error: `cfg` predicate key must be an identifier
20-
--> $DIR/cfg-path-error.rs:15:11
20+
--> $DIR/cfg-path-error.rs:17:11
2121
|
2222
LL | #[cfg(all(foo::bar, foo))]
2323
| ^^^^^^^^

tests/ui/cfg/cfg_attr.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//@ run-pass
22
//@ compile-flags:--cfg set1 --cfg set2
3-
#![allow(dead_code)]
3+
4+
#![allow(dead_code, unexpected_cfgs)]
5+
46
use std::fmt::Debug;
57

68
struct NotDebugable;

tests/ui/cfg/cfgs-on-items.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
//@ run-pass
2-
//@ compile-flags: --cfg fooA --cfg fooB
2+
//@ compile-flags: --cfg fooA --cfg fooB --check-cfg=cfg(fooA,fooB,fooC,bar)
33

44
// fooA AND !bar
5-
65
#[cfg(all(fooA, not(bar)))]
76
fn foo1() -> isize { 1 }
87

tests/ui/cfg/diagnostics-not-a-def.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
#![feature(lint_reasons)]
2+
13
pub mod inner {
4+
#[expect(unexpected_cfgs)]
25
pub fn i_am_here() {
36
#[cfg(feature = "another one that doesn't exist")]
47
loop {}

tests/ui/cfg/diagnostics-not-a-def.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0425]: cannot find function `i_am_not` in module `inner`
2-
--> $DIR/diagnostics-not-a-def.rs:11:12
2+
--> $DIR/diagnostics-not-a-def.rs:14:12
33
|
44
LL | inner::i_am_not();
55
| ^^^^^^^^ not found in `inner`

tests/ui/cfg/diagnostics-same-crate.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(unexpected_cfgs)] // since we want to recognize them as unexpected
2+
13
pub mod inner {
24
#[cfg(FALSE)]
35
pub fn uwu() {}

tests/ui/cfg/diagnostics-same-crate.stderr

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,72 @@
11
error[E0432]: unresolved import `super::inner::doesnt_exist`
2-
--> $DIR/diagnostics-same-crate.rs:28:9
2+
--> $DIR/diagnostics-same-crate.rs:30:9
33
|
44
LL | use super::inner::doesnt_exist;
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `doesnt_exist` in `inner`
66
|
77
note: found an item that was configured out
8-
--> $DIR/diagnostics-same-crate.rs:7:13
8+
--> $DIR/diagnostics-same-crate.rs:9:13
99
|
1010
LL | pub mod doesnt_exist {
1111
| ^^^^^^^^^^^^
1212

1313
error[E0432]: unresolved import `super::inner::doesnt_exist`
14-
--> $DIR/diagnostics-same-crate.rs:31:23
14+
--> $DIR/diagnostics-same-crate.rs:33:23
1515
|
1616
LL | use super::inner::doesnt_exist::hi;
1717
| ^^^^^^^^^^^^ could not find `doesnt_exist` in `inner`
1818
|
1919
note: found an item that was configured out
20-
--> $DIR/diagnostics-same-crate.rs:7:13
20+
--> $DIR/diagnostics-same-crate.rs:9:13
2121
|
2222
LL | pub mod doesnt_exist {
2323
| ^^^^^^^^^^^^
2424

2525
error[E0433]: failed to resolve: could not find `doesnt_exist` in `inner`
26-
--> $DIR/diagnostics-same-crate.rs:50:12
26+
--> $DIR/diagnostics-same-crate.rs:52:12
2727
|
2828
LL | inner::doesnt_exist::hello();
2929
| ^^^^^^^^^^^^ could not find `doesnt_exist` in `inner`
3030
|
3131
note: found an item that was configured out
32-
--> $DIR/diagnostics-same-crate.rs:7:13
32+
--> $DIR/diagnostics-same-crate.rs:9:13
3333
|
3434
LL | pub mod doesnt_exist {
3535
| ^^^^^^^^^^^^
3636

3737
error[E0425]: cannot find function `uwu` in module `inner`
38-
--> $DIR/diagnostics-same-crate.rs:45:12
38+
--> $DIR/diagnostics-same-crate.rs:47:12
3939
|
4040
LL | inner::uwu();
4141
| ^^^ not found in `inner`
4242
|
4343
note: found an item that was configured out
44-
--> $DIR/diagnostics-same-crate.rs:3:12
44+
--> $DIR/diagnostics-same-crate.rs:5:12
4545
|
4646
LL | pub fn uwu() {}
4747
| ^^^
4848

4949
error[E0425]: cannot find function `meow` in module `inner::right`
50-
--> $DIR/diagnostics-same-crate.rs:54:19
50+
--> $DIR/diagnostics-same-crate.rs:56:19
5151
|
5252
LL | inner::right::meow();
5353
| ^^^^ not found in `inner::right`
5454
|
5555
note: found an item that was configured out
56-
--> $DIR/diagnostics-same-crate.rs:22:16
56+
--> $DIR/diagnostics-same-crate.rs:24:16
5757
|
5858
LL | pub fn meow() {}
5959
| ^^^^
6060
= note: the item is gated behind the `what-a-cool-feature` feature
6161

6262
error[E0425]: cannot find function `uwu` in this scope
63-
--> $DIR/diagnostics-same-crate.rs:41:5
63+
--> $DIR/diagnostics-same-crate.rs:43:5
6464
|
6565
LL | uwu();
6666
| ^^^ not found in this scope
6767

6868
error[E0425]: cannot find function `vanished` in this scope
69-
--> $DIR/diagnostics-same-crate.rs:61:5
69+
--> $DIR/diagnostics-same-crate.rs:63:5
7070
|
7171
LL | vanished();
7272
| ^^^^^^^^ not found in this scope

tests/ui/cfg/expanded-cfg.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
//@ check-pass
22

3+
#![allow(unexpected_cfgs)] // since we different cfgs
4+
35
macro_rules! mac {
46
{} => {
57
#[cfg(attr)]

tests/ui/cfg/future-compat-crate-attributes-using-cfg_attr.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@ check-fail
2-
//@ compile-flags:--cfg foo
2+
//@ compile-flags:--cfg foo --check-cfg=cfg(foo)
33

44
#![cfg_attr(foo, crate_type="bin")]
55
//~^ERROR `crate_type` within

tests/ui/conditional-compilation/cfg-attr-cfg-2.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
//
21
//@ error-pattern: `main` function not found
3-
//@ compile-flags: --cfg foo
2+
//@ compile-flags: --cfg foo --check-cfg=cfg(foo,bar)
43

54
// main is conditionally compiled, but the conditional compilation
65
// is conditional too!

tests/ui/conditional-compilation/cfg-attr-cfg-2.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0601]: `main` function not found in crate `cfg_attr_cfg_2`
2-
--> $DIR/cfg-attr-cfg-2.rs:9:14
2+
--> $DIR/cfg-attr-cfg-2.rs:8:14
33
|
44
LL | fn main() { }
55
| ^ consider adding a `main` function to `$DIR/cfg-attr-cfg-2.rs`

tests/ui/conditional-compilation/cfg-attr-crate-2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// https://github.com/rust-lang/rust/issues/21833#issuecomment-72353044
22

3-
//@ compile-flags: --cfg broken
3+
//@ compile-flags: --cfg broken --check-cfg=cfg(broken)
44

55
#![crate_type = "lib"]
66
#![cfg_attr(broken, no_core)] //~ ERROR the `#[no_core]` attribute is an experimental feature

tests/ui/conditional-compilation/cfg-attr-multi-invalid-1.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@ compile-flags: --cfg broken
1+
//@ compile-flags: --cfg broken --check-cfg=cfg(broken)
22

33
#![crate_type = "lib"]
44
#![cfg_attr(broken, no_core, no_std)]

tests/ui/conditional-compilation/cfg-attr-multi-invalid-2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@ compile-flags: --cfg broken
1+
//@ compile-flags: --cfg broken --check-cfg=cfg(broken)
22

33
#![crate_type = "lib"]
44
#![cfg_attr(broken, no_std, no_core)]

tests/ui/conditional-compilation/cfg-generic-params.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@ compile-flags:--cfg yes
1+
//@ compile-flags:--cfg yes --check-cfg=cfg(yes,no)
22

33
fn f_lt<#[cfg(yes)] 'a: 'a, #[cfg(FALSE)] T>() {}
44
fn f_ty<#[cfg(FALSE)] 'a: 'a, #[cfg(yes)] T>() {}

tests/ui/conditional-compilation/test-cfg.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@ compile-flags: --cfg foo
1+
//@ compile-flags: --cfg foo --check-cfg=cfg(foo,bar)
22

33
#[cfg(all(foo, bar))] // foo AND bar
44
fn foo() {}

tests/ui/imports/extern-prelude-extern-crate-cfg.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@ build-pass (FIXME(62277): could be check-pass?)
2-
//@ compile-flags:--cfg my_feature
2+
//@ compile-flags:--cfg my_feature --check-cfg=cfg(my_feature)
33

44
#![no_std]
55

tests/ui/macros/macro-comma-support-rpass.rs

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ fn assert_ne() {
5151
}
5252

5353
#[test]
54+
#[allow(unexpected_cfgs)]
5455
fn cfg() {
5556
let _ = cfg!(pants);
5657
let _ = cfg!(pants,);

tests/ui/macros/macro-meta-items.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
//@ run-pass
2+
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)
3+
24
#![allow(dead_code)]
3-
//@ compile-flags: --cfg foo
45

56
macro_rules! compiles_fine {
67
($at:meta) => {

tests/ui/macros/macro-with-attrs1.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@ run-pass
2-
//@ compile-flags: --cfg foo
2+
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)
33

44

55
#[cfg(foo)]

tests/ui/macros/syntax-extension-cfg.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//@ run-pass
22
//@ compile-flags: --cfg foo --cfg qux="foo"
3-
3+
//@ compile-flags: --check-cfg=cfg(foo) --check-cfg=cfg(qux,values("foo"))
44

55
pub fn main() {
66
// check

tests/ui/methods/method-lookup-order.rs

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
//@ revisions: b00001 b00010 b00011 b00100 b00101 b00110 b00111 b01000 b01001 b01100 b01101 b10000 b10001 b10010 b10011 b10101 b10111 b11000 b11001 b11101
2020

21+
//@ compile-flags: --check-cfg=cfg(inherent_mut,bar_for_foo,mutbar_for_foo)
22+
//@ compile-flags: --check-cfg=cfg(valbar_for_et_foo,valbar_for_etmut_foo)
23+
2124
//@[b00001]compile-flags: --cfg inherent_mut
2225
//@[b00010]compile-flags: --cfg bar_for_foo
2326
//@[b00011]compile-flags: --cfg inherent_mut --cfg bar_for_foo

tests/ui/parser/attribute/attr-unquoted-ident.fixed

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//@ compile-flags: -Zdeduplicate-diagnostics=yes
22
//@ run-rustfix
33

4+
#![allow(unexpected_cfgs)]
5+
46
fn main() {
57
#[cfg(key="foo")]
68
//~^ ERROR expected unsuffixed literal, found `foo`

tests/ui/parser/attribute/attr-unquoted-ident.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//@ compile-flags: -Zdeduplicate-diagnostics=yes
22
//@ run-rustfix
33

4+
#![allow(unexpected_cfgs)]
5+
46
fn main() {
57
#[cfg(key=foo)]
68
//~^ ERROR expected unsuffixed literal, found `foo`

tests/ui/parser/attribute/attr-unquoted-ident.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: expected unsuffixed literal, found `foo`
2-
--> $DIR/attr-unquoted-ident.rs:5:15
2+
--> $DIR/attr-unquoted-ident.rs:7:15
33
|
44
LL | #[cfg(key=foo)]
55
| ^^^
@@ -10,7 +10,7 @@ LL | #[cfg(key="foo")]
1010
| + +
1111

1212
error: expected unsuffixed literal, found `foo`
13-
--> $DIR/attr-unquoted-ident.rs:11:15
13+
--> $DIR/attr-unquoted-ident.rs:13:15
1414
|
1515
LL | #[cfg(key=foo bar baz)]
1616
| ^^^

tests/ui/regions/regions-refcell.rs

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// attempting to bootstrap librustc with new destructor lifetime
44
// semantics.
55

6+
#![allow(unexpected_cfgs)] // for the cfg-as-descriptions
67

78
use std::collections::HashMap;
89
use std::cell::RefCell;

0 commit comments

Comments
 (0)