From 2304077e0d573dcf8401a1f8dd939becc30839ea Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Sun, 19 Apr 2026 02:20:12 +0100 Subject: [PATCH] gate benchmark feature on nightly toolchain Closes #12653 --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 2 ++ build.rs | 4 ++++ src/ast.rs | 2 +- src/common.rs | 2 +- src/lib.rs | 2 +- 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 64acded92..b4f7298f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -296,6 +296,7 @@ dependencies = [ "rand", "rsconf", "rust-embed", + "rustc_version", "serial_test", "strum_macros", "unix_path", @@ -890,6 +891,15 @@ dependencies = [ "walkdir", ] +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "same-file" version = "1.0.6" @@ -920,6 +930,12 @@ version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + [[package]] name = "serde" version = "1.0.228" diff --git a/Cargo.toml b/Cargo.toml index fc2c37c4f..0ee3e2d03 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,6 +73,7 @@ rust-embed = { version = "8.11.0", features = [ "include-exclude", "interpolate-folder-path", ] } +rustc_version = "0.4.1" serial_test = { version = "3", default-features = false } strum_macros = "0.28.0" widestring = "1.2.0" @@ -158,6 +159,7 @@ fish-build-helper.workspace = true fish-gettext-mo-file-parser.workspace = true phf_codegen = { workspace = true, optional = true } rsconf.workspace = true +rustc_version.workspace = true [target.'cfg(windows)'.build-dependencies] unix_path.workspace = true diff --git a/build.rs b/build.rs index a95131a0f..c9212dcfe 100644 --- a/build.rs +++ b/build.rs @@ -6,6 +6,10 @@ use std::path::{Path, PathBuf}; fn main() { + let is_nightly = + rustc_version::version_meta().unwrap().channel == rustc_version::Channel::Nightly; + rsconf::declare_cfg("nightly", is_nightly); + setup_paths(); // Add our default to enable tools that don't go through CMake, like "cargo test" and the diff --git a/src/ast.rs b/src/ast.rs index 66b089eba..71cd7e4bc 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -2889,7 +2889,7 @@ fn test_is_same_node() { } // Run with cargo +nightly bench --features=benchmark -#[cfg(feature = "benchmark")] +#[cfg(all(nightly, feature = "benchmark"))] #[cfg(test)] mod bench { extern crate test; diff --git a/src/common.rs b/src/common.rs index 3ec51a397..dcf65adf6 100644 --- a/src/common.rs +++ b/src/common.rs @@ -707,7 +707,7 @@ macro_rules! check_decode { } } -#[cfg(feature = "benchmark")] +#[cfg(all(nightly, feature = "benchmark"))] #[cfg(test)] mod bench { extern crate test; diff --git a/src/lib.rs b/src/lib.rs index 7e88e3d35..ad789e45e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -#![cfg_attr(feature = "benchmark", feature(test))] +#![cfg_attr(all(nightly, feature = "benchmark"), feature(test))] #![allow(non_camel_case_types)] pub const BUILD_VERSION: &str = env!("FISH_BUILD_VERSION");