Skip to content

Commit

Permalink
Unrolled build for rust-lang#133710
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#133710 - Urgau:target_feature-merge-conflitcs, r=jieyouxu

Reducing `target_feature` check-cfg merge conflicts

It was rightfully pointed in rust-lang#133099 (comment) that the expected values for the `target_feature` cfg are regularly updated and unfortunately the check-cfg tests for it are very merge-conflict prone.

This PR aims at drastically reducing the likely-hood of those, by normalizing the "and X more" diagnostic, as well as making the full expected list multi-line instead of being on a single one.

cc `@RalfJung`
r? `@jieyouxu`
  • Loading branch information
rust-timer authored Dec 3, 2024
2 parents 42b4b9c + 43bed16 commit add31b5
Show file tree
Hide file tree
Showing 9 changed files with 346 additions and 24 deletions.
2 changes: 2 additions & 0 deletions src/tools/compiletest/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1125,6 +1125,8 @@ fn parse_normalize_rule(header: &str) -> Option<(String, String)> {
.captures(header)?;
let regex = captures["regex"].to_owned();
let replacement = captures["replacement"].to_owned();
// FIXME: Support escaped new-line in strings.
let replacement = replacement.replace("\\n", "\n");
Some((regex, replacement))
}

Expand Down
13 changes: 13 additions & 0 deletions tests/ui/check-cfg/and-more-diagnostic.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// This test makes sure that we don't emit a long list of possible values
// but that we stop at a fix point and say "and X more".
//
//@ check-pass
//@ no-auto-check-cfg
//@ compile-flags: --check-cfg=cfg()
//@ normalize-stderr-test: "and \d+ more" -> "and X more"
//@ normalize-stderr-test: "`[a-zA-Z0-9_-]+`" -> "`xxx`"

fn main() {
cfg!(target_feature = "zebra");
//~^ WARNING unexpected `cfg` condition value
}
12 changes: 12 additions & 0 deletions tests/ui/check-cfg/and-more-diagnostic.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
warning: unexpected `xxx` condition value: `xxx`
--> $DIR/and-more-diagnostic.rs:11:10
|
LL | cfg!(target_feature = "zebra");
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: expected values for `xxx` are: `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, `xxx`, and `xxx` and X more
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
= note: `#[warn(unexpected_cfgs)]` on by default

warning: 1 warning emitted

2 changes: 0 additions & 2 deletions tests/ui/check-cfg/mix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@ fn test_cfg_macro() {
//~^ WARNING unexpected `cfg` condition value
//~| WARNING unexpected `cfg` condition value
//~| WARNING unexpected `cfg` condition value
cfg!(target_feature = "zebra");
//~^ WARNING unexpected `cfg` condition value
}

fn main() {}
11 changes: 1 addition & 10 deletions tests/ui/check-cfg/mix.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -245,14 +245,5 @@ LL | cfg!(all(feature = "zebra", feature = "zebra", feature = "zebra"));
= help: to expect this configuration use `--check-cfg=cfg(feature, values("zebra"))`
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration

warning: unexpected `cfg` condition value: `zebra`
--> $DIR/mix.rs:78:10
|
LL | cfg!(target_feature = "zebra");
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: expected values for `target_feature` are: `10e60`, `2e3`, `3e3r1`, `3e3r2`, `3e3r3`, `3e7`, `7e10`, `a`, `aclass`, `adx`, `aes`, `altivec`, `alu32`, `amx-bf16`, `amx-complex`, `amx-fp16`, `amx-int8`, `amx-tile`, `atomics`, `avx`, `avx2`, `avx512bf16`, `avx512bitalg`, `avx512bw`, `avx512cd`, `avx512dq`, `avx512f`, `avx512fp16`, `avx512ifma`, `avx512vbmi`, `avx512vbmi2`, `avx512vl`, `avx512vnni`, `avx512vp2intersect`, and `avx512vpopcntdq` and 252 more
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration

warning: 27 warnings emitted
warning: 26 warnings emitted

18 changes: 18 additions & 0 deletions tests/ui/check-cfg/target_feature.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// This test prints all the possible values for the `target_feature` cfg
// as a way to assert the expected values and reflect on any changes made
// to the `target_feature` cfg in the compiler.
//
// The output of this test does not reflect the actual output seen by
// users which will see a truncated list of possible values (at worst).
//
// In case of test output differences, just `--bless` the test.
//
//@ check-pass
//@ no-auto-check-cfg
//@ compile-flags: --check-cfg=cfg() -Zcheck-cfg-all-expected
//@ normalize-stderr-test: "`, `" -> "`\n`"

fn main() {
cfg!(target_feature = "_UNEXPECTED_VALUE");
//~^ WARNING unexpected `cfg` condition value
}
297 changes: 297 additions & 0 deletions tests/ui/check-cfg/target_feature.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
--> $DIR/target_feature.rs:16:10
|
LL | cfg!(target_feature = "_UNEXPECTED_VALUE");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: expected values for `target_feature` are: `10e60`
`2e3`
`3e3r1`
`3e3r2`
`3e3r3`
`3e7`
`7e10`
`a`
`aclass`
`adx`
`aes`
`altivec`
`alu32`
`amx-bf16`
`amx-complex`
`amx-fp16`
`amx-int8`
`amx-tile`
`atomics`
`avx`
`avx2`
`avx512bf16`
`avx512bitalg`
`avx512bw`
`avx512cd`
`avx512dq`
`avx512f`
`avx512fp16`
`avx512ifma`
`avx512vbmi`
`avx512vbmi2`
`avx512vl`
`avx512vnni`
`avx512vp2intersect`
`avx512vpopcntdq`
`avxifma`
`avxneconvert`
`avxvnni`
`avxvnniint16`
`avxvnniint8`
`backchain`
`bf16`
`bmi1`
`bmi2`
`bti`
`bulk-memory`
`c`
`cache`
`cmpxchg16b`
`crc`
`crt-static`
`cssc`
`d`
`d32`
`dit`
`doloop`
`dotprod`
`dpb`
`dpb2`
`dsp`
`dsp1e2`
`dspe60`
`e`
`e1`
`e2`
`ecv`
`edsp`
`elrw`
`ermsb`
`exception-handling`
`extended-const`
`f`
`f16c`
`f32mm`
`f64mm`
`faminmax`
`fcma`
`fdivdu`
`fhm`
`flagm`
`flagm2`
`float1e2`
`float1e3`
`float3e4`
`float7e60`
`floate1`
`fma`
`fp-armv8`
`fp16`
`fp64`
`fp8`
`fp8dot2`
`fp8dot4`
`fp8fma`
`fpuv2_df`
`fpuv2_sf`
`fpuv3_df`
`fpuv3_hf`
`fpuv3_hi`
`fpuv3_sf`
`frecipe`
`frintts`
`fxsr`
`gfni`
`hard-float`
`hard-float-abi`
`hard-tp`
`hbc`
`high-registers`
`hvx`
`hvx-length128b`
`hwdiv`
`i8mm`
`jsconv`
`lahfsahf`
`lasx`
`lbt`
`leoncasa`
`lor`
`lse`
`lse128`
`lse2`
`lsx`
`lut`
`lvz`
`lzcnt`
`m`
`mclass`
`mops`
`movbe`
`mp`
`mp1e2`
`msa`
`mte`
`multivalue`
`mutable-globals`
`neon`
`nontrapping-fptoint`
`nvic`
`paca`
`pacg`
`pan`
`partword-atomics`
`pauth-lr`
`pclmulqdq`
`pmuv3`
`popcnt`
`power10-vector`
`power8-altivec`
`power8-vector`
`power9-altivec`
`power9-vector`
`prfchw`
`quadword-atomics`
`rand`
`ras`
`rclass`
`rcpc`
`rcpc2`
`rcpc3`
`rdm`
`rdrand`
`rdseed`
`reference-types`
`relax`
`relaxed-simd`
`reserve-x18`
`rtm`
`sb`
`sha`
`sha2`
`sha3`
`sha512`
`sign-ext`
`simd128`
`sm3`
`sm4`
`sme`
`sme-b16b16`
`sme-f16f16`
`sme-f64f64`
`sme-f8f16`
`sme-f8f32`
`sme-fa64`
`sme-i16i64`
`sme-lutv2`
`sme2`
`sme2p1`
`spe`
`ssbs`
`sse`
`sse2`
`sse3`
`sse4.1`
`sse4.2`
`sse4a`
`ssse3`
`ssve-fp8dot2`
`ssve-fp8dot4`
`ssve-fp8fma`
`sve`
`sve-b16b16`
`sve2`
`sve2-aes`
`sve2-bitperm`
`sve2-sha3`
`sve2-sm4`
`sve2p1`
`tail-call`
`tbm`
`thumb-mode`
`thumb2`
`tme`
`trust`
`trustzone`
`ual`
`unaligned-scalar-mem`
`v`
`v5te`
`v6`
`v6k`
`v6t2`
`v7`
`v8`
`v8.1a`
`v8.2a`
`v8.3a`
`v8.4a`
`v8.5a`
`v8.6a`
`v8.7a`
`v8.8a`
`v8.9a`
`v8plus`
`v9`
`v9.1a`
`v9.2a`
`v9.3a`
`v9.4a`
`v9.5a`
`v9a`
`vaes`
`vdsp2e60f`
`vdspv1`
`vdspv2`
`vector`
`vfp2`
`vfp3`
`vfp4`
`vh`
`virt`
`virtualization`
`vpclmulqdq`
`vsx`
`wfxt`
`wide-arithmetic`
`xop`
`xsave`
`xsavec`
`xsaveopt`
`xsaves`
`zaamo`
`zabha`
`zalrsc`
`zba`
`zbb`
`zbc`
`zbkb`
`zbkc`
`zbkx`
`zbs`
`zdinx`
`zfh`
`zfhmin`
`zfinx`
`zhinx`
`zhinxmin`
`zk`
`zkn`
`zknd`
`zkne`
`zknh`
`zkr`
`zks`
`zksed`
`zksh`, and `zkt`
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
= note: `#[warn(unexpected_cfgs)]` on by default

warning: 1 warning emitted

4 changes: 2 additions & 2 deletions tests/ui/check-cfg/well-known-values.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@
//~^ WARN unexpected `cfg` condition value
target_family = "_UNEXPECTED_VALUE",
//~^ WARN unexpected `cfg` condition value
target_feature = "_UNEXPECTED_VALUE",
//~^ WARN unexpected `cfg` condition value
// target_feature = "_UNEXPECTED_VALUE",
// ^ tested in target_feature.rs
target_has_atomic = "_UNEXPECTED_VALUE",
//~^ WARN unexpected `cfg` condition value
target_has_atomic_equal_alignment = "_UNEXPECTED_VALUE",
Expand Down
Loading

0 comments on commit add31b5

Please sign in to comment.