Skip to content

Commit

Permalink
compiletest: add enable-by-default check-cfg
Browse files Browse the repository at this point in the history
  • Loading branch information
Urgau committed May 2, 2024
1 parent a96964d commit 595ddb0
Show file tree
Hide file tree
Showing 41 changed files with 110 additions and 61 deletions.
25 changes: 22 additions & 3 deletions src/tools/compiletest/src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1028,12 +1028,31 @@ impl<'test> TestCx<'test> {
}

fn set_revision_flags(&self, cmd: &mut Command) {
// Normalize revisions to be lowercase and replace `-`s with `_`s.
// Otherwise the `--cfg` flag is not valid.
let normalize_revision = |revision: &str| revision.to_lowercase().replace("-", "_");

if let Some(revision) = self.revision {
// Normalize revisions to be lowercase and replace `-`s with `_`s.
// Otherwise the `--cfg` flag is not valid.
let normalized_revision = revision.to_lowercase().replace("-", "_");
let normalized_revision = normalize_revision(revision);
cmd.args(&["--cfg", &normalized_revision]);
}

if !self.props.no_auto_check_cfg {
let mut check_cfg = String::with_capacity(25);

// Generate `cfg(FALSE, REV1, ..., REVN)` (for all possible revisions)
//
// For compatibility reason we consider the `FALSE` cfg to be expected
// since it is extensively used in the testsuite.
check_cfg.push_str("cfg(FALSE");
for revision in &self.props.revisions {
check_cfg.push_str(",");
check_cfg.push_str(&normalize_revision(&revision));
}
check_cfg.push_str(")");

cmd.args(&["--check-cfg", &check_cfg]);
}
}

fn typecheck_source(&self, src: String) -> ProcRes {
Expand Down
6 changes: 3 additions & 3 deletions tests/rustdoc-ui/argfile/commandline-argfile.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Check to see if we can get parameters from an @argsfile file
//
//@ check-pass
//@ compile-flags: --cfg cmdline_set @{{src-base}}/argfile/commandline-argfile.args
//@ compile-flags: --cfg cmdline_set --check-cfg=cfg(cmdline_set,unbroken)
//@ compile-flags: @{{src-base}}/argfile/commandline-argfile.args

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

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

fn main() {
}
fn main() {}
6 changes: 3 additions & 3 deletions tests/ui/argfile/commandline-argfile.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Check to see if we can get parameters from an @argsfile file
//
//@ build-pass
//@ compile-flags: --cfg cmdline_set @{{src-base}}/argfile/commandline-argfile.args
//@ compile-flags: --cfg cmdline_set --check-cfg=cfg(cmdline_set,unbroken)
//@ compile-flags: @{{src-base}}/argfile/commandline-argfile.args

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

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

fn main() {
}
fn main() {}
3 changes: 2 additions & 1 deletion tests/ui/cfg/cfg-in-crate-1.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//@ run-pass
//@ compile-flags: --cfg bar -D warnings
//@ compile-flags: --cfg bar --check-cfg=cfg(bar) -D warnings

#![cfg(bar)]

fn main() {}
2 changes: 1 addition & 1 deletion tests/ui/cfg/cfg-macros-foo.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//@ run-pass
//@ compile-flags: --cfg foo
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)

// check that cfg correctly chooses between the macro impls (see also
// cfg-macros-notfoo.rs)
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/cfg/cfg-path-error.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
//@ check-fail

#![allow(unexpected_cfgs)] // invalid cfgs

#[cfg(any(foo, foo::bar))]
//~^ERROR `cfg` predicate key must be an identifier
fn foo1() {}
Expand Down
8 changes: 4 additions & 4 deletions tests/ui/cfg/cfg-path-error.stderr
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
error: `cfg` predicate key must be an identifier
--> $DIR/cfg-path-error.rs:3:16
--> $DIR/cfg-path-error.rs:5:16
|
LL | #[cfg(any(foo, foo::bar))]
| ^^^^^^^^

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

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

error: `cfg` predicate key must be an identifier
--> $DIR/cfg-path-error.rs:15:11
--> $DIR/cfg-path-error.rs:17:11
|
LL | #[cfg(all(foo::bar, foo))]
| ^^^^^^^^
Expand Down
4 changes: 3 additions & 1 deletion tests/ui/cfg/cfg_attr.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
//@ run-pass
//@ compile-flags:--cfg set1 --cfg set2
#![allow(dead_code)]

#![allow(dead_code, unexpected_cfgs)]

use std::fmt::Debug;

struct NotDebugable;
Expand Down
3 changes: 1 addition & 2 deletions tests/ui/cfg/cfgs-on-items.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
//@ run-pass
//@ compile-flags: --cfg fooA --cfg fooB
//@ compile-flags: --cfg fooA --cfg fooB --check-cfg=cfg(fooA,fooB,fooC,bar)

// fooA AND !bar

#[cfg(all(fooA, not(bar)))]
fn foo1() -> isize { 1 }

Expand Down
3 changes: 3 additions & 0 deletions tests/ui/cfg/diagnostics-not-a-def.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
#![feature(lint_reasons)]

pub mod inner {
#[expect(unexpected_cfgs)]
pub fn i_am_here() {
#[cfg(feature = "another one that doesn't exist")]
loop {}
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/cfg/diagnostics-not-a-def.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error[E0425]: cannot find function `i_am_not` in module `inner`
--> $DIR/diagnostics-not-a-def.rs:11:12
--> $DIR/diagnostics-not-a-def.rs:14:12
|
LL | inner::i_am_not();
| ^^^^^^^^ not found in `inner`
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/cfg/diagnostics-same-crate.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![allow(unexpected_cfgs)] // since we want to recognize them as unexpected

pub mod inner {
#[cfg(FALSE)]
pub fn uwu() {}
Expand Down
24 changes: 12 additions & 12 deletions tests/ui/cfg/diagnostics-same-crate.stderr
Original file line number Diff line number Diff line change
@@ -1,72 +1,72 @@
error[E0432]: unresolved import `super::inner::doesnt_exist`
--> $DIR/diagnostics-same-crate.rs:28:9
--> $DIR/diagnostics-same-crate.rs:30:9
|
LL | use super::inner::doesnt_exist;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `doesnt_exist` in `inner`
|
note: found an item that was configured out
--> $DIR/diagnostics-same-crate.rs:7:13
--> $DIR/diagnostics-same-crate.rs:9:13
|
LL | pub mod doesnt_exist {
| ^^^^^^^^^^^^

error[E0432]: unresolved import `super::inner::doesnt_exist`
--> $DIR/diagnostics-same-crate.rs:31:23
--> $DIR/diagnostics-same-crate.rs:33:23
|
LL | use super::inner::doesnt_exist::hi;
| ^^^^^^^^^^^^ could not find `doesnt_exist` in `inner`
|
note: found an item that was configured out
--> $DIR/diagnostics-same-crate.rs:7:13
--> $DIR/diagnostics-same-crate.rs:9:13
|
LL | pub mod doesnt_exist {
| ^^^^^^^^^^^^

error[E0433]: failed to resolve: could not find `doesnt_exist` in `inner`
--> $DIR/diagnostics-same-crate.rs:50:12
--> $DIR/diagnostics-same-crate.rs:52:12
|
LL | inner::doesnt_exist::hello();
| ^^^^^^^^^^^^ could not find `doesnt_exist` in `inner`
|
note: found an item that was configured out
--> $DIR/diagnostics-same-crate.rs:7:13
--> $DIR/diagnostics-same-crate.rs:9:13
|
LL | pub mod doesnt_exist {
| ^^^^^^^^^^^^

error[E0425]: cannot find function `uwu` in module `inner`
--> $DIR/diagnostics-same-crate.rs:45:12
--> $DIR/diagnostics-same-crate.rs:47:12
|
LL | inner::uwu();
| ^^^ not found in `inner`
|
note: found an item that was configured out
--> $DIR/diagnostics-same-crate.rs:3:12
--> $DIR/diagnostics-same-crate.rs:5:12
|
LL | pub fn uwu() {}
| ^^^

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

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

error[E0425]: cannot find function `vanished` in this scope
--> $DIR/diagnostics-same-crate.rs:61:5
--> $DIR/diagnostics-same-crate.rs:63:5
|
LL | vanished();
| ^^^^^^^^ not found in this scope
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/cfg/expanded-cfg.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
//@ check-pass

#![allow(unexpected_cfgs)] // since we different cfgs

macro_rules! mac {
{} => {
#[cfg(attr)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//@ check-fail
//@ compile-flags:--cfg foo
//@ compile-flags:--cfg foo --check-cfg=cfg(foo)

#![cfg_attr(foo, crate_type="bin")]
//~^ERROR `crate_type` within
Expand Down
3 changes: 1 addition & 2 deletions tests/ui/conditional-compilation/cfg-attr-cfg-2.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
//
//@ error-pattern: `main` function not found
//@ compile-flags: --cfg foo
//@ compile-flags: --cfg foo --check-cfg=cfg(foo,bar)

// main is conditionally compiled, but the conditional compilation
// is conditional too!
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/conditional-compilation/cfg-attr-cfg-2.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error[E0601]: `main` function not found in crate `cfg_attr_cfg_2`
--> $DIR/cfg-attr-cfg-2.rs:9:14
--> $DIR/cfg-attr-cfg-2.rs:8:14
|
LL | fn main() { }
| ^ consider adding a `main` function to `$DIR/cfg-attr-cfg-2.rs`
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/conditional-compilation/cfg-attr-crate-2.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// https://github.com/rust-lang/rust/issues/21833#issuecomment-72353044

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

#![crate_type = "lib"]
#![cfg_attr(broken, no_core)] //~ ERROR the `#[no_core]` attribute is an experimental feature
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//@ compile-flags: --cfg broken
//@ compile-flags: --cfg broken --check-cfg=cfg(broken)

#![crate_type = "lib"]
#![cfg_attr(broken, no_core, no_std)]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//@ compile-flags: --cfg broken
//@ compile-flags: --cfg broken --check-cfg=cfg(broken)

#![crate_type = "lib"]
#![cfg_attr(broken, no_std, no_core)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/conditional-compilation/cfg-generic-params.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//@ compile-flags:--cfg yes
//@ compile-flags:--cfg yes --check-cfg=cfg(yes,no)

fn f_lt<#[cfg(yes)] 'a: 'a, #[cfg(FALSE)] T>() {}
fn f_ty<#[cfg(FALSE)] 'a: 'a, #[cfg(yes)] T>() {}
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/conditional-compilation/test-cfg.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//@ compile-flags: --cfg foo
//@ compile-flags: --cfg foo --check-cfg=cfg(foo,bar)

#[cfg(all(foo, bar))] // foo AND bar
fn foo() {}
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/imports/extern-prelude-extern-crate-cfg.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//@ build-pass (FIXME(62277): could be check-pass?)
//@ compile-flags:--cfg my_feature
//@ compile-flags:--cfg my_feature --check-cfg=cfg(my_feature)

#![no_std]

Expand Down
1 change: 1 addition & 0 deletions tests/ui/macros/macro-comma-support-rpass.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ fn assert_ne() {
}

#[test]
#[allow(unexpected_cfgs)]
fn cfg() {
let _ = cfg!(pants);
let _ = cfg!(pants,);
Expand Down
3 changes: 2 additions & 1 deletion tests/ui/macros/macro-meta-items.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@ run-pass
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)

#![allow(dead_code)]
//@ compile-flags: --cfg foo

macro_rules! compiles_fine {
($at:meta) => {
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/macros/macro-with-attrs1.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//@ run-pass
//@ compile-flags: --cfg foo
//@ compile-flags: --cfg foo --check-cfg=cfg(foo)


#[cfg(foo)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/macros/syntax-extension-cfg.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//@ run-pass
//@ compile-flags: --cfg foo --cfg qux="foo"

//@ compile-flags: --check-cfg=cfg(foo) --check-cfg=cfg(qux,values("foo"))

pub fn main() {
// check
Expand Down
3 changes: 3 additions & 0 deletions tests/ui/methods/method-lookup-order.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

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

//@ compile-flags: --check-cfg=cfg(inherent_mut,bar_for_foo,mutbar_for_foo)
//@ compile-flags: --check-cfg=cfg(valbar_for_et_foo,valbar_for_etmut_foo)

//@[b00001]compile-flags: --cfg inherent_mut
//@[b00010]compile-flags: --cfg bar_for_foo
//@[b00011]compile-flags: --cfg inherent_mut --cfg bar_for_foo
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/parser/attribute/attr-unquoted-ident.fixed
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
//@ compile-flags: -Zdeduplicate-diagnostics=yes
//@ run-rustfix

#![allow(unexpected_cfgs)]

fn main() {
#[cfg(key="foo")]
//~^ ERROR expected unsuffixed literal, found `foo`
Expand Down
2 changes: 2 additions & 0 deletions tests/ui/parser/attribute/attr-unquoted-ident.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
//@ compile-flags: -Zdeduplicate-diagnostics=yes
//@ run-rustfix

#![allow(unexpected_cfgs)]

fn main() {
#[cfg(key=foo)]
//~^ ERROR expected unsuffixed literal, found `foo`
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/parser/attribute/attr-unquoted-ident.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: expected unsuffixed literal, found `foo`
--> $DIR/attr-unquoted-ident.rs:5:15
--> $DIR/attr-unquoted-ident.rs:7:15
|
LL | #[cfg(key=foo)]
| ^^^
Expand All @@ -10,7 +10,7 @@ LL | #[cfg(key="foo")]
| + +

error: expected unsuffixed literal, found `foo`
--> $DIR/attr-unquoted-ident.rs:11:15
--> $DIR/attr-unquoted-ident.rs:13:15
|
LL | #[cfg(key=foo bar baz)]
| ^^^
Expand Down
1 change: 1 addition & 0 deletions tests/ui/regions/regions-refcell.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// attempting to bootstrap librustc with new destructor lifetime
// semantics.

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

use std::collections::HashMap;
use std::cell::RefCell;
Expand Down

0 comments on commit 595ddb0

Please sign in to comment.